4.4. 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 RARP-palvelin tai BOOTP-palvelin.

Reverse Address Resolution Protocol (RARP) on yksi tapa kertoa asiakaskoneelle sen IP-osoite. Toinen tapa on BOOTP-protokolla. 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.

4.4.1. RARP-palvelimen asetukset

RARP:n asetuksia varten on tiedettävä asennettavien asiakaskoneiden Ethernet-osoitteet (eli Mac-osoitteet). Jos nämä osoitteet eivät ole tiedosssa, voidaan katsoa se OpenROM:n ensimmäisistä käynnistysviesteistä, käytä OpenBootin komentoa .enet-addr, tai käynnistää “Rescue”-tilaan (esim. hätäkäynnistyslevykkeeltä) ja komentaa /sbin/ifconfig eth0.

RARP-palvelimella jossa käytetään Linux-ydintä 2.4 tai 2.6, tai käyttöjärjestelmää Solaris/SunOS, käytetään ohjelmaa rarpd. On varmistuttava, että asiakaskoneen Ethernet-laiteosoite on mainittu “ethers”-tietokannassa (joko tiedostossa /etc/ethers tai NIS/NIS+:n kautta) ja “hosts”-tietokannassa. Sitten on käynnistettävä RARP-taustaprosessi. Anna (pääkäyttäjänä) komento: /usr/sbin/rarpd -a useimmissa Linux-järjestelmissä ja käyttöjärjestelmässä SunOS 5 (Solaris 2), /usr/sbin/in.rarpd -a joissakin muissa Linux-järjestelmissä tai /usr/etc/rarpd -a käyttöjärjestelmässä SunOS 4 (Solaris 1).

4.4.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.

Käytettäessä CMU bootpd:tä, on ensin poistettava kommenttimerkki asiaankuuluvalta riviltä (tai lisättävä rivi) tiedostossa /etc/inetd.conf. Debian GNU/Linuxissa tämä voidaan tehdä komennoilla update-inetd --enable bootps ja sitten /etc/init.d/inetd reload. Siltä varalta ettei käytettävässä BOOTP-palvelimessa ole Debiania, rivin pitäisi näyttää tällaiselta:

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

Nyt on tehtävä tiedosto /etc/bootptab. Tiedostossa on sama tuttu ja kryptinen muoto kuin vanhassa kunnon BSD:n tiedostoissa printcap, termcap, ja disktab. Katso tiedoston bootptab man-sivulta lisätietoja. CMU bootpd:tä varten on tiedettävä asiakaskoneen Ethernetosoite (MAC). Tässä on esimerkki tiedostosta /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:

On muutettava ainakin riviä “ha”, joka määrittää asiakaskoneen MAC-osoitteen. Rivi “bf” määrittää tiedoston, joka asiakaskoneen on noudettava TFTP:llä; katso tarkempaa tietoa kohdasta Kohta 4.4.5, “Siirretään TFTP-otokset paikalleen”.

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.4.3, “DHCP-palvelimen asetukset”. Siinä tapauksessa luultavasti riittää direktiivin allow bootp lisääminen asiakaskoneen aliverkon asetusten lohkoon ja dhcpd:n käynnistäminen uudelleen komennolla /etc/init.d/dhcpd3-server restart.

4.4.3. 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/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/dhcpd3-server restart.

4.4.4. TFTP-palvelimen käyttöönotto

Jotta TFTP-palvelin saataisiin toimintakuntoon, on ensin varmistettava tftpd:n olevan käytettävissä. Tavallisesti se otetaan käyttöön kirjoittamalla tämän tapaista tiedostoon /etc/inetd.conf:

tftp dgram udp wait nobody /usr/sbin/tcpd in.tftpd /tftpboot

Debianin paketit tekevät tämän asetuksen yleensä oikein kun ne asennetaan.

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.

Lue tiedosto /etc/inetd.conf ja muista in.tftpd:n parametrina oleva hakemisto[2]; sitä tarvitaan tuonnempana. Jos tiedostoa /etc/inetd.conf on jouduttu muuttamaan, on käynnissä olevalle inetd-prosessille huomautettava muutoksesta. Debian-koneella komennetaan /etc/init.d/inetd reload; muilla koneilla etsitään prosessin inetd numero ja komennetaan kill -HUP inetd-pid.

4.4.5. 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.

4.4.5.1. SPARC:n käynnistys TFTP:llä

Jotkin SPARC-suoritinperheet lisäävät suoritinarkkitehtuurin nimen, kuten “SUN4M” tai “SUN4C”, tiedoston nimeen. Niinpä, jos järjestelmän suoritinarkkitehtuuri on SUN4C ja sen IP on 192.168.1.3, tiedoston nimi olisi C0A80103.SUN4C. Joissakin suoritinarkkitehtuuressa asiakaskoneen etsimän tiedoston nimi on kuitenkin vain asiakaskoneen-ip-heksana. Helppo tapa nähdä IP-osoite heksana on kirjoittaa seuraava komento komentotulkissa (olettaen että koneelle tarkoitettu IP-osoite on 10.0.0.4).

$ printf '%.2x%.2x%.2x%.2x\n' 10 0 0 4

Oikean tiedoston nimen saa muuttamalla kaikki kirjaimet isoiksi ja tarvittaessa liittämällä loppuun suoritinarkkitehtuurin nimen.

Jos teit tämän kaiken oikein, pitäisi OpenPROM:ssa komennolla boot net saada otos ladattua. Jos otosta ei löydy, yritä tarkistaa tftp-palvelimen lokeista mitä otoksen nimeä yritetään noutaa.

Joissakin sparc-järjestelmissä voidaan OpenPROM:n käynnistyskomennolla järjestelmä pakottaa käyttämään tiettyä tiedoston nimeä. Komento olisi boot net minun-sparc.image. Tiedoston on silti oltava hakemistossa josta TFTP-palvelin sitä etsii.



[2] Valitsin -l käynnistää joissakin in.tftpd:n versioissa kaikkien pyyntöjen lokkaamisen järjestelmän lokeihin; tästä on hyötyä käynnistyksen vianjäljityksessä.