Diskless OpenBSD

Allikas: Kuutõrvaja

Sissejuhatus

Diskless OpenBSD on selline OpenBSD operatsioonisüsteemi kasutusjuht, kui kõnealune arvuti alglaaditakse võrgust ning töötamise ajal on juurfailisüsteem (ning ka teised failisüsteemid) ja saaleala külge ühendatud üle NFS'i. Sõna diskless (ingl. k. ilma kõvakettata) rõhutab asjaolu, et töötaval arvutil puudub kõvaketas, kusjuures muus osas toimib arvuti tavapäraselt.

Ilma kõvakettata kasutus võiks olla asjakohane näiteks sellistel juhtudel

  • haldusprotseduuride sooritamiseks on tarvis, et arvuti lokaalsed kettad ei oleks kasutuses
  • nö vaikselt töötava töökoha kasutamisel
  • OpenBSD tarkvara ja huvipakkuva riistvara sobivuse kontrollimiseks ilma operatsioonisüseemi paigaldust sooritamata
  • tarkvarauuenduste katsetamiseks
  • põneva elamuse saamise eesmärgil

Diskless arvuti käivitumine toimub x86 arhitektuuri puhul sellise järgnevuse läbimisel

  • diskless arvuti saab oma PXE-võimelise võrgukaardi abil teada DHCP serverilt oma ip aadressi ja TFTP serveri aadressi
  • diskless arvuti kopeerib TFTP serverilt bootloaderi ja käivitab selle
  • bootloader kopeerib TFTP serverilt tuuma ja asub tuuma bootima
  • tuuma bootimise ajal küsib diskless arvuti võrgust RARP serverilt omale uuesti ip aadressi ja saab BOOTPARAMS serverilt teada oma juurfailisüsteemi ja saaleala asukohad, kust neid võrgust omale külge ühendada
  • operatsioonisüsteemi käivitumisel ühendatakse külge NFS serverilt juurfailisüsteem, swap ning vajadusel ka muud failisüsteemid

Seega, ilma lokaalse kõvakettata OpenBSD kasutamine eeldab, et kohtvõrgus, reeglina samas võrgusegmendis, on diskless arvuti bootimiseks ja kasutamiseks sobivalt seadistatud DHCP, TFTP, RARP, BOOTPARAMS ja NFS teenused. Käesolevas tekstis esitatud näidetes on eeldatud ja kirjeldatud nende teenuseid pakkumist samuti OpenBSD abil, kusjuures kõiki ühelt ja samalt arvutilt, aga neid teenused võib teha kättesaadavaks erinevatelt arvutitelt ja ka muudelt platvormidelt, nt Linuxilt. Samuti ei ole oluline, et diskless kliendi ja DHCP, TFTP, RARP, BOOTPARAMS ning NFS teenuseid pakkuvate serverite riistvaraline arhitektuur oleks samasugune .

Alltoodud näidetes on diskless arvuti ip aadress 192.168.10.216 ja mac aadress 00:11:25:85:64:34, serverprogrammid töötavad ip aadressil 192.168.10.254, mac aadress 00:0e:0c:b0:96:b6.

DHCP

Kõige täpsemalt saab DHCP server nö tabada klienti kui seda teha kliendi MAC aadressi abil, näiteks võiks kasutada sellist dhcp seadistusfaili

 shared-network arvutid {
  option  domain-name-servers 192.168.10.254;
  option domain-name "loomaaed";   
 
 subnet 192.168.01.0 netmask 255.255.255.0 {
  range 192.168.10.32 192.168.10.63;
  option broadcast-address 192.168.10.255;
  option routers 192.168.10.254;
 }
 
 host diskless.loomaaed {
    hardware ethernet 00:11:25:85:64:34;
    fixed-address 192.168.10.216;
    option broadcast-address 192.168.10.255;
    option routers 192.168.10.254;
    filename "pxeboot";
 }
 }

Siit saab diskless klient teada, et tema ip aadress on 192.168.10.216 ja et bootloaderina tuleb kasutada pxeboot nimelist faili, mille saab kopeerida DCHP serveriga samal ip aadressil töötavast TFTP serverist. Kui DHCP server käivitada foregroundis on andmevahetust hõlbus jälgida

 # dhcpd -d -f fxp0 em0
 DHCPDISCOVER from 00:11:25:85:64:34 via em0
 DHCPOFFER on 192.168.10.216 to 00:11:25:85:64:34 via em0
 DHCPREQUEST for 192.168.10.216 from 00:11:25:85:64:34 via em0
 DHCPACK on 192.168.10.216 to 00:11:25:85:64:34 via em0

TFTP

TFTP serveri juurkataloog asub tavaliselt kataloogis /tftpboot, sinna tuleb antud juhul kopeerida kaks faili, bootloader ning tuum

 # cp /usr/mdec/pxeboot /tftpboot
 # cp /bsd /tftpboot

ning TFTP saab seadistada vanematel OpenBSD versioonidel käima nt Inet superserverist, lisades faili /etc/inetd.conf rea

 tftp     dgram udp   wait  root  /usr/libexec/tftpd   tftpd -s /tftpboot

Uuemal ajal (nt v. 5.7) on sobiv öelda

# rcctl set tftpd status on
# rcctl set tftpd flags /ftpboot
# /etc/rc.d/tftpd start

RARP ja BOOTPARAMS

Tuuma bootimise ajal diskless arvuti küsib omale RARP protokolli kasutades uuesti ip aadressi ning seejärel küsib tuum omale rpc.bootparamd serverilt juurfailisüsteemi ja saaleala asukoha.

Nende vastuste saamiseks peab serveris olema failis /etc/hosts diskless arvutile vastav sissekanne

 192.168.10.216 diskless

ja käivitatud rarpd deemon sobiva seadistusfaili /etc/ethers sisuga

 diskless 00:11:25:85:64:34

Käivitamiseks tuleb öelda, eeldusel et diskless klient asub em0 seadme taga võrgus

 # rarpd em0

ning rpc.bootparamd deemon sobiva seadistusfaili /etc/bootparams sisuga

 diskless root=192.168.10.254:/data/diskless/root swap=192.168.10.254:/data/diskless/swap

Käivitamiseks tuleb öelda esmalt

# rcctl set portmap status on
# /etc/rc.d/portmap start

ning seejärel

# rcctl set bootparamd status on
# /etc/rc.d/rpc.bootparamd start

Kui need programmid käivitada nö foregroundis, on hõlbus jälgida kliendiga toimuvat andmevahetust

 # rarpd -d -l em0
 em0: 0:e:c:b0:96:b6
       192.168.10.254
 rarpd: got a packet
 rarpd: 00:11:25:85:64:34
 rarpd: reply sent

ning

 # rpc.bootparamd -d -s
 rpc.bootparamd: whoami got question for 192.168.10.216
 rpc.bootparamd: This is host diskless
 rpc.bootparamd: Returning diskless       127.0.0.1
 rpc.bootparamd: getfile got question for "diskless" and file "root"
 rpc.bootparamd: returning server:192.168.10.254 path:/data/diskless/root address: 192.168.10.254
 rpc.bootparamd: getfile got question for "diskless" and file "swap"
 rpc.bootparamd: returning server:192.168.10.254 path:/data/diskless/swap address: 192.168.10.254

Diskless arvuti konsoolil ilmuvad samal ajal teated

 PXE boot MAC address 00:11:25:85:64:34, interface em0
 nfs_boot: using interface em0, with revarp & bootparams
 nfs_boot: client_addr=192.168.10.216
 nfs_boot: server_addr=192.168.10.254 hostname=diskless
 root on 192.168.10.254:/data/diskless/root
 swap on 192.168.10.254:/data/diskless/swap

NFS

NFS serveri ülesandeks on pakkuda diskless arvutile tema juurfailisüsteemi ja saaleala kasutamise teenust.

Kliendile üle NFSi jagatav juurfailisüsteem peab olema sobivalt ettevalmistatud, kui kliendi ja serveri riistvaraline arhitektuur on sama, nt i386, siis võib alustuseks lihtsalt kopeerida kogu NFS serveri operatsioonisüsteemi osa kliendi juurfailisüsteemile vastava kataloogi alla, seda võib teha töötava süsteemi tingimustes

 # mkdir /data/diskless/root
 # cp -pR /altroot /bin /boot /bsd /dev /etc /home /mnt \
 /root /sbin /stand /sys /tftpboot /tmp /usr /var /data/diskless/root

ja moodustada kliendile saaleala jaoks ühenduspunkt ning swap fail, NB! OpenBSD puhul ei pea saalealale vastavat faili nö formaatima ega kuidagi eriliselt ettevalmistama

 # mkdir /data/diskless/root/swap
 # dd if=/dev/zero of=/data/diskless/swap bs=1M count=512

Sellise NFS serveri seadistusfaili abil saab need ressursid teha kliendile kättesaadavaks sellise /etc/exports faili sisuga

 /data/diskless/root -maproot=root -alldirs diskless

Seejärel tuleb kohendada diskless arvuti juurfailisüsteemi olulisemate failde sisu, Fail /data/diskless/etc/fstab sisu näiteks selliseks

 192.168.10.254:/data/diskless/root / nfs rw 0 0
 192.168.10.254:/data/diskless/swap none swap sw,nfsmntpt=/swap

Oluline on kohendada võrguseadistused sobivaks failis etc/hostname.if, samuti etc/mygate ning etc/hosts failide sisu.

Kui diskless arvuti juurfailisüsteemina ei ole NFS serveri enda juurfailisüsteemi sobilik kasutada (nt arhitekuuri erinevuse tõttu), siis saab kasutada OpenBSD paigalduseks mõeldud nn .tgz faile (ingl. k. file sets, binary distribution sets), arvestades asjaolu, et OpenBSD paigaldamine kujutab endast peaasjalikult nende file set'tide lahtipakkimist. Suhteliselt üksikasjalikult on seda protseduuri kirjeldatud palas http://kuutorvaja.eenet.ee/wiki/Operatsioonis%C3%BCsteemi_uuendamine.

Kui NFS serveri ja kliendi arhitektuur on sama, saab jagada diskless kliendile välja NFS serveri enda /usr failisüsteemi vaid lugemisõigusega, selleks tuleb /etc/exports failis näidata ära

 /usr -ro -maproot=root -alldirs diskless

ning kliendi etc/fstab failis

 192.168.10.254:/usr /usr nfs ro 0 0

Diskless arvuti alglaadimine

Diskless arvuti bootimiseks peab hoolitsema, et võrgukaabel oleks ühendatud, lülitada toide sisse ning jälgida konsoolile esitatavaid teateid. Kui kõik läheb hästi, peaks saama sisse logida ja süsteemi kasutada saama. Kasutamise lõpetamisel tuleb operatsioonisüsteem tavapärasel moel peatada, nt käsuga halt.

Märkused ja kasutusnõuanded

  • Kui diskless arvuti algkäivitamine jääb peatuma, nt 'starting network' juures, siis maksab kuulata võrku pealt, et saada aimu, kus takistus tekib. Ühel juhtumil oli NFS liiklus fragmenteeritud ning aitas NFS serveri paketifiltris 'scrub in' sisselülitamine.
  • Eriti mugav on tarkvara uuendusi ja muudatuste tegemisi katsetada kui diskless süsteemi juurfailisüsteem asub NFS serveril sellisel failisüsteemil, milles saab teha snapshot'i.
  • Tutvuda manuaaliga 'man diskless'