Erinevus lehekülje "Root-over-NFS" redaktsioonide vahel

Allikas: Kuutõrvaja
(TFTP serveri ettevalmistamine)
(Võrgust käivitatud bootloader pxelinux)
 
(ei näidata sama kasutaja 21 vahepealset redaktsiooni)
7. rida: 7. rida:
 
Üldiselt läbitakse arvuti käivitamisel järgmised etapid
 
Üldiselt läbitakse arvuti käivitamisel järgmised etapid
  
#Katsetades järgemööda BIOSis näidatud boot-seadmeid käivitatakse esimene leitud bootloader
+
#Katsetades järgemööda BIOSis näidatud boot-seadmeid käivitatakse esimene leitud bootloader (eesti k. alglaadija)
 
#Bootloaderi abil laaditakse operatsioonisüsteemi tuum
 
#Bootloaderi abil laaditakse operatsioonisüsteemi tuum
 
#Vastavalt tuuma käivitamisel kasutatud parameetritele, ühendatakse külge juurfailisüsteem ning käivitatakse operatsioonisüsteem
 
#Vastavalt tuuma käivitamisel kasutatud parameetritele, ühendatakse külge juurfailisüsteem ning käivitatakse operatsioonisüsteem
15. rida: 15. rida:
 
#PXE (preboot execution environment) on standardne viis, mil moel võrgukaart pöördub DHCP serveri poole, omandab võrguseadistuse ning kopeerib edasi TFTP serveri poole pöördudes võrgust bootloaderi
 
#PXE (preboot execution environment) on standardne viis, mil moel võrgukaart pöördub DHCP serveri poole, omandab võrguseadistuse ning kopeerib edasi TFTP serveri poole pöördudes võrgust bootloaderi
 
#bootloader kopeerib võrgust tuuma
 
#bootloader kopeerib võrgust tuuma
#tuuma laadimisel omandatakse uuesti võrguparameetrid ning ühendab võrgust külge juurfailisüsteemi
+
#tuuma laadimisel omandatakse uuesti võrguparameetrid ning ühendatakse võrgust külge juurfailisüsteem
  
 
Kõige praktilisemat huvi pakuvad kaks juhtu
 
Kõige praktilisemat huvi pakuvad kaks juhtu
26. rida: 26. rida:
 
Sõltumata sellest, kas bootloader ja tuum laaditakse võrgust või klientarvuti lokaalselt meedialt, NFS serveril peab asuma juurfailisüsteem. NFS serveri ettevalmistamine koosneb kahest tegevusest
 
Sõltumata sellest, kas bootloader ja tuum laaditakse võrgust või klientarvuti lokaalselt meedialt, NFS serveril peab asuma juurfailisüsteem. NFS serveri ettevalmistamine koosneb kahest tegevusest
  
#klientarvuti juurfailisüsteemi ettevalmistamine - selleks sobib nt kasutada Debian GNU/Linuxi programmi debootstrap ning moodustada nö chroot keskkond
+
#klientarvuti juurfailisüsteemi ettevalmistamine - selleks sobib nt kasutada Debian GNU/Linuxi programmi debootstrap ning moodustada nö chroot keskkond, nt kataloogi /data/nfsroot
#NFS serverprogrammi käivitamine - jagada sobivate ligipääsupiirangutega võrku välja klientarvuti juurfailisüsteem
+
#juurfailisüsteemi võrku jagamine - jagada sobivate ligipääsupiirangutega NFS servr abil võrku välja klientarvuti juurfailisüsteem
  
 
===Kliendi tuuma ettevalmistamine===
 
===Kliendi tuuma ettevalmistamine===
38. rida: 38. rida:
 
  Networking -> Networking options -> IP: kernel level autoconfiguration -> IP: DHCP support
 
  Networking -> Networking options -> IP: kernel level autoconfiguration -> IP: DHCP support
 
  File Systems -> Network File Systems -> Root FS on NFS
 
  File Systems -> Network File Systems -> Root FS on NFS
 +
 +
Ilmselt aga on kõige praktilisem kasutada distributsiooni standardset tuuma, mis töötab samuti.
  
 
===TFTP serveri ettevalmistamine===
 
===TFTP serveri ettevalmistamine===
  
Sõltuvalt sellest, kas kasutatakse lokaalselt meedialt või võrgust käivitatud bootloaderit, tuleb võrgust kopeerida vastavalt, kas tuum või bootloader ja tuum. Kasutamiseks sobib atftpd serveri tarkvara. Seadke näiteks tftpd serveri juurfailisüsteemiks kataloog /var/tftpdboot, kuhu tuleb kopeerida bootloader, bootloaderi seadistusfail, tuum ja ramdisk kui seda kasutatakse. Konkreetsed näited on esitatud allpool.
+
TFTP serveri pidamiseks sobib kasutada nt atftpd tarkvara. Sõltuvalt sellest, kas kasutatakse lokaalselt meedialt või võrgust käivitatud bootloaderit, tuleb võrgust kopeerida vastavalt
 +
 
 +
* lokaalne bootloader - tuum ja ramdisk
 +
* võrgust käivitatud bootloader - bootloader, bootloaderi seadistusfail, tuum ja ramdisk
 +
 
 +
Seadke näiteks tftpd serveri juurfailisüsteemiks kataloog /var/tftpdboot ja kopeerige sinna vajalikud failid. Konkreetsed näited on esitatud allpool.
  
 
===Lokaalselt meedialt käivitatud bootloader===
 
===Lokaalselt meedialt käivitatud bootloader===
  
Grub bootloaderi tarkvarast on võimalik moodustada bootiv CD plaat, mille kasutamise tulemusena arvuti bootitakse üles sellelt plaadilt ning seejärel bootloader kopeerib tftp serverist tuuma. CD valmistamiseks
+
Grub bootloaderi tarkvarast on võimalik moodustada bootiv CD plaat, mille kasutamise tulemusena arvuti bootitakse üles sellelt plaadilt ning seejärel bootloader kopeerib tftp serverist tuuma ja ramdiski. CD valmistamiseks
  
 
#Debian GNU/Linuxi operatsioonisüsteemiga jagatav grub ei ole võrguvõimeline ja sellepärast tuleb pakett kompileerida ringi.
 
#Debian GNU/Linuxi operatsioonisüsteemiga jagatav grub ei ole võrguvõimeline ja sellepärast tuleb pakett kompileerida ringi.
55. rida: 62. rida:
 
  ifconfig        --address=192.168.1.200 --mask=255.255.255.0 --server=192.168.1.254
 
  ifconfig        --address=192.168.1.200 --mask=255.255.255.0 --server=192.168.1.254
 
  root            (nd)
 
  root            (nd)
  kernel          (nd)/vmlinuz-2.6.17.6-amdrtlnforce root=/dev/nfs nfsroot=192.168.1.254:/mnt/hdc1/nfs-root-evangelist \
+
  kernel          (nd)/tuum root=/dev/nfs \
ip=192.168.1.200:192.168.1.254:192.168.1.254:255.255.255.0:evangelist:eth0:off
+
  nfsroot=192.168.1.254:/data/nfsroot \
 +
  ip=192.168.1.200:192.168.1.254:192.168.1.254:255.255.255.0:evangelist:eth0:off
 +
module                  (nd)/ramdisk
 +
 
 +
* --server näitab tftp serveri aadressi kust kopeeritakse tuum ja ramdisk
  
 
ning anda .iso moodustamiseks kataloogis /usr/src käsk
 
ning anda .iso moodustamiseks kataloogis /usr/src käsk
62. rida: 73. rida:
 
  bash$ mkisofs -R -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table -o grub.iso iso  
 
  bash$ mkisofs -R -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table -o grub.iso iso  
  
Seejärel kirjutada CD plaat ning sellelt plaadilt klientarvutit bootides jõutakse grub menüüvalikusse, sealt saab vajadusel teha veel parandusi ning lasta grubil kopeerida tftpd serverilt tuum ning see laadida seadistatud parameetritega. Edasi ühendatakse külge NFS serverilt juurfailisüsteem ning käivitatakse operatsioonisüsteem.  
+
Seejärel kirjutada CD plaat ning sellelt plaadilt klientarvutit bootides jõutakse grub menüüvalikusse, sealt saab vajadusel teha veel parandusi ning lasta grubil kopeerida tftpd serverilt tuum ning see laadida seadistatud parameetritega. Edasi ühendatakse külge NFS serverilt juurfailisüsteem ning käivitatakse operatsioonisüsteem.
  
 
===Võrgust käivitatud bootloader pxegrub===
 
===Võrgust käivitatud bootloader pxegrub===
81. rida: 92. rida:
 
   filename "pxegrub";
 
   filename "pxegrub";
 
  }
 
  }
 +
 +
kus next-server näitab tftpd serveri aadressi.
  
 
Antud juhul saab klient dhcp serverilt teada, et bootloader ning bootloaderi menüüfail tuleb kopeerida tftpd serverist aadressil 192.168.10.254. Fail pxegrub tuleb kopeerida võrguvõimelise grubi paketist ning menu.lst sobivalt ettevalmistada. Edasine tegevus jätkub sarnaselt eelmisele punktile, bootloader laadib tuuma ning seejärel ühendatakse külge juurfailisüsteem ning käivitatakse operatsioonisüsteem.
 
Antud juhul saab klient dhcp serverilt teada, et bootloader ning bootloaderi menüüfail tuleb kopeerida tftpd serverist aadressil 192.168.10.254. Fail pxegrub tuleb kopeerida võrguvõimelise grubi paketist ning menu.lst sobivalt ettevalmistada. Edasine tegevus jätkub sarnaselt eelmisele punktile, bootloader laadib tuuma ning seejärel ühendatakse külge juurfailisüsteem ning käivitatakse operatsioonisüsteem.
86. rida: 99. rida:
 
===Võrgust käivitatud bootloader pxelinux===
 
===Võrgust käivitatud bootloader pxelinux===
  
DHCP serveris töötab selline root-over-nfs kliendile vastav sektsioon
+
pxelinuxi kasutamise eelduseks on, et on kasutada PXE toega võrgukaart. DHCP serveris töötab selline root-over-nfs kliendile vastav sektsioon
  
 
   host xen-nfsroot.auul {
 
   host xen-nfsroot.auul {
99. rida: 112. rida:
 
   }
 
   }
  
ning tftpd serveris peab olema neli faili
+
kus next-server näitab tftpd serveri aadressi. tftpd serveris peab olema neli faili
  
 
* pxelinuxi bootloader /var/tftpboot/pxelinux.0
 
* pxelinuxi bootloader /var/tftpboot/pxelinux.0
113. rida: 126. rida:
 
   kernel vmlinuz-2.6.22-3-686
 
   kernel vmlinuz-2.6.22-3-686
 
   append initrd=initrd.img-2.6.22-3-686-tootav root=/dev/nfs \
 
   append initrd=initrd.img-2.6.22-3-686-tootav root=/dev/nfs \
     nfsroot=192.168.10.251:/data/nfsroot_xen \
+
     nfsroot=192.168.10.251:/data/nfsroot \
 
     ip=192.168.10.101:192.168.10.254:192.168.10.254:255.255.255.0:emmija:eth0:off
 
     ip=192.168.10.101:192.168.10.254:192.168.10.254:255.255.255.0:emmija:eth0:off
 +
 +
Kusjuures PXE bootloader pxelinux.0 ise ei toeta otseselt konkreetset võrgukaarti, nt Inteli või 3Com seadmeid, oluline on, et seade vastaks PXE standardile.
 +
 +
Tavaliselt ei ole selle järele vajadust, aga nt lisades append reale root=/dev/nfs ette 'insmod=e1000' laaditakse kerneli moodul e1000.
 +
 +
pxelinux.0 faili saab näiteks syslinux-common paketist, mille paigaldamiseks tuleb öelda
 +
 +
# apt-get install syslinux-common
  
 
===Märkused===
 
===Märkused===
  
Käesolevas palas käsitleti bootloaderit Grub, teised populaarsed bootloaderid on pxelinux ning etherboot.
+
Käesolevas palas käsitleti bootloaderit grub ja pxelinux, populaarne asjandus on veel etherboot.
  
Debian GNU/Linux grub paketi kasutamisel tuleb arvestada, milliste võrgukaartide toetus on olemas
+
Debian GNU/Linux grub paketi kasutamisel tuleb arvestada, milliste võrgukaartide toetus on olemas (nb! see ei ole pxegrub juhtum)
  
 
#bash$ apt-get source grub
 
#bash$ apt-get source grub
140. rida: 161. rida:
 
# bash$ dpkg-buildpackage -rfakeroot
 
# bash$ dpkg-buildpackage -rfakeroot
 
# mõnel juhul võiks bootloaderi vahele jätta ja lasta otse DCHP serveril PXE'le tuum kätta anda, aga vähemalt minu ühel seesugusel katsel teatas arvuti seepeale, et mälust ei piisanud
 
# mõnel juhul võiks bootloaderi vahele jätta ja lasta otse DCHP serveril PXE'le tuum kätta anda, aga vähemalt minu ühel seesugusel katsel teatas arvuti seepeale, et mälust ei piisanud
 +
 +
Linuxi Root-over-NFS arvutile on sobilik ühendada külge swap üle iSCSI.
  
 
TODO: palad teemadel: dhcp, tftp, nfs, debiani pakettide tekitamine, tuuma kompileerimine, debiani paketihaldus, grub, debootstrap
 
TODO: palad teemadel: dhcp, tftp, nfs, debiani pakettide tekitamine, tuuma kompileerimine, debiani paketihaldus, grub, debootstrap
 +
 +
===Kasulikud lisamaterjalid===
 +
 +
* http://syslinux.zytor.com/
 +
* http://www.debian-administration.org/articles/478

Viimane redaktsioon: 8. detsember 2011, kell 00:42

Eesmärk

Soovitavaks tulemuseks on tekitada nn diskless (ingl. k. ilma kõvakettata) arvuti, st millel endal puudub kõvaketas ja kuhu on ühendatud külge NFS serverilt juurfailisüsteem. Muus osas on tegu tavalisel moel töötava arvutiga.

Tutvustus

Üldiselt läbitakse arvuti käivitamisel järgmised etapid

  1. Katsetades järgemööda BIOSis näidatud boot-seadmeid käivitatakse esimene leitud bootloader (eesti k. alglaadija)
  2. Bootloaderi abil laaditakse operatsioonisüsteemi tuum
  3. Vastavalt tuuma käivitamisel kasutatud parameetritele, ühendatakse külge juurfailisüsteem ning käivitatakse operatsioonisüsteem

Tavaliselt leitakse bootloader arvuti ainsalt kõvakettalt, sealt samast laaditakse tuum, ühendatakse külge juurfailisüsteem ning lõpuks käivitatakse operatsioonisüsteem. Võimalik on aga korraldada nii, et osa tegevusi sooritatakse kohalikus arvutis ning osa jaoks pöördutakse võrku:

  1. PXE (preboot execution environment) on standardne viis, mil moel võrgukaart pöördub DHCP serveri poole, omandab võrguseadistuse ning kopeerib edasi TFTP serveri poole pöördudes võrgust bootloaderi
  2. bootloader kopeerib võrgust tuuma
  3. tuuma laadimisel omandatakse uuesti võrguparameetrid ning ühendatakse võrgust külge juurfailisüsteem

Kõige praktilisemat huvi pakuvad kaks juhtu

  1. lokaalselt meedialt käivitatud bootloader - klientarvutil ei ole PXE võimelist võrgukaarti, kuid CD plaadilt või pehmekettalt käivitatakse bootloader, mis kopeerib võrgust tuuma
  2. võrgust käivitatud bootloader - klientarvutil on PXE võimeline võrgukaart ning süsteem käivitatakse ilma lokaalset meediat tarvitamata

NFS serveri ettevalmistamine

Sõltumata sellest, kas bootloader ja tuum laaditakse võrgust või klientarvuti lokaalselt meedialt, NFS serveril peab asuma juurfailisüsteem. NFS serveri ettevalmistamine koosneb kahest tegevusest

  1. klientarvuti juurfailisüsteemi ettevalmistamine - selleks sobib nt kasutada Debian GNU/Linuxi programmi debootstrap ning moodustada nö chroot keskkond, nt kataloogi /data/nfsroot
  2. juurfailisüsteemi võrku jagamine - jagada sobivate ligipääsupiirangutega NFS servr abil võrku välja klientarvuti juurfailisüsteem

Kliendi tuuma ettevalmistamine

Sõltumata sellest, kas laaditav tuum kopeeritakse võrgust või kohalikult meedialt peab tuum olema selliste omadustega

  1. võrgukaardi tugi
  2. Root-over-NFS tugi
Networking -> Networking options -> IP: kernel level autoconfiguration -> IP: DHCP support
File Systems -> Network File Systems -> Root FS on NFS

Ilmselt aga on kõige praktilisem kasutada distributsiooni standardset tuuma, mis töötab samuti.

TFTP serveri ettevalmistamine

TFTP serveri pidamiseks sobib kasutada nt atftpd tarkvara. Sõltuvalt sellest, kas kasutatakse lokaalselt meedialt või võrgust käivitatud bootloaderit, tuleb võrgust kopeerida vastavalt

  • lokaalne bootloader - tuum ja ramdisk
  • võrgust käivitatud bootloader - bootloader, bootloaderi seadistusfail, tuum ja ramdisk

Seadke näiteks tftpd serveri juurfailisüsteemiks kataloog /var/tftpdboot ja kopeerige sinna vajalikud failid. Konkreetsed näited on esitatud allpool.

Lokaalselt meedialt käivitatud bootloader

Grub bootloaderi tarkvarast on võimalik moodustada bootiv CD plaat, mille kasutamise tulemusena arvuti bootitakse üles sellelt plaadilt ning seejärel bootloader kopeerib tftp serverist tuuma ja ramdiski. CD valmistamiseks

  1. Debian GNU/Linuxi operatsioonisüsteemiga jagatav grub ei ole võrguvõimeline ja sellepärast tuleb pakett kompileerida ringi.
  2. moodustada kataloog /usr/src/iso/grub/boot
  3. kopeerida sinna fail /lib/grub/i386-pc/stage2_eltorito
  4. moodustada fail /usr/src/iso/grub/boot/menu.lst sisuga
title           nfs_1.200
ifconfig        --address=192.168.1.200 --mask=255.255.255.0 --server=192.168.1.254
root            (nd)
kernel          (nd)/tuum root=/dev/nfs \
  nfsroot=192.168.1.254:/data/nfsroot \
  ip=192.168.1.200:192.168.1.254:192.168.1.254:255.255.255.0:evangelist:eth0:off
module                   (nd)/ramdisk
  • --server näitab tftp serveri aadressi kust kopeeritakse tuum ja ramdisk

ning anda .iso moodustamiseks kataloogis /usr/src käsk

bash$ mkisofs -R -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table -o grub.iso iso 

Seejärel kirjutada CD plaat ning sellelt plaadilt klientarvutit bootides jõutakse grub menüüvalikusse, sealt saab vajadusel teha veel parandusi ning lasta grubil kopeerida tftpd serverilt tuum ning see laadida seadistatud parameetritega. Edasi ühendatakse külge NFS serverilt juurfailisüsteem ning käivitatakse operatsioonisüsteem.

Võrgust käivitatud bootloader pxegrub

Bootloaderi võrgust leidmiseks peab võrgus töötama sobivalt ettevalmistatud dhcp server, sobib kasutada ICS dhcp server, kolm viimast rida on võrgust bootimise spetsiifilised

host evangelist.auul {
  hardware ethernet 00:17:31:b2:77:df;
  fixed-address 192.168.10.20;
  option broadcast-address 192.168.10.255;
  option routers 192.168.10.254;
  option domain-name-servers 192.168.1.254;
  option host-name "evangelist";
  option domain-name "auul";
 
  next-server 192.168.10.254;
  option option-150 "(nd)/menu.lst";
  filename "pxegrub";
}

kus next-server näitab tftpd serveri aadressi.

Antud juhul saab klient dhcp serverilt teada, et bootloader ning bootloaderi menüüfail tuleb kopeerida tftpd serverist aadressil 192.168.10.254. Fail pxegrub tuleb kopeerida võrguvõimelise grubi paketist ning menu.lst sobivalt ettevalmistada. Edasine tegevus jätkub sarnaselt eelmisele punktile, bootloader laadib tuuma ning seejärel ühendatakse külge juurfailisüsteem ning käivitatakse operatsioonisüsteem.

Võrgust käivitatud bootloader pxelinux

pxelinuxi kasutamise eelduseks on, et on kasutada PXE toega võrgukaart. DHCP serveris töötab selline root-over-nfs kliendile vastav sektsioon

 host xen-nfsroot.auul {
   hardware ethernet 00:0e:0c:ba:4b:28;
   fixed-address 192.168.10.101;
   option broadcast-address 192.168.10.255;
   option routers 192.168.10.254;
 
   filename "pxelinux.0";
   next-server 192.168.10.251;
   option domain-name-servers 192.168.10.254;
 }

kus next-server näitab tftpd serveri aadressi. tftpd serveris peab olema neli faili

  • pxelinuxi bootloader /var/tftpboot/pxelinux.0
  • pxelinuxi seadistusfail /var/tftpboot/pxelinux.cfg/default
  • nfs kliendi tuum
  • nfs kliendi ramdisk

kusjuures /var/tftpboot/pxelinux.cfg/default sisaldab

 default nfsroot
 
 label nfsroot
 kernel vmlinuz-2.6.22-3-686
 append initrd=initrd.img-2.6.22-3-686-tootav root=/dev/nfs \
   nfsroot=192.168.10.251:/data/nfsroot \
   ip=192.168.10.101:192.168.10.254:192.168.10.254:255.255.255.0:emmija:eth0:off

Kusjuures PXE bootloader pxelinux.0 ise ei toeta otseselt konkreetset võrgukaarti, nt Inteli või 3Com seadmeid, oluline on, et seade vastaks PXE standardile.

Tavaliselt ei ole selle järele vajadust, aga nt lisades append reale root=/dev/nfs ette 'insmod=e1000' laaditakse kerneli moodul e1000.

pxelinux.0 faili saab näiteks syslinux-common paketist, mille paigaldamiseks tuleb öelda

# apt-get install syslinux-common

Märkused

Käesolevas palas käsitleti bootloaderit grub ja pxelinux, populaarne asjandus on veel etherboot.

Debian GNU/Linux grub paketi kasutamisel tuleb arvestada, milliste võrgukaartide toetus on olemas (nb! see ei ole pxegrub juhtum)

  1. bash$ apt-get source grub
  2. redigeerida debian/rules failis nn ./configure suvandeid, näiteks Realteki, Inteli ja 3Com populaarsete võrgukaartide toetuse lisamiseks tekitada juurde sellised read, et kokku on vastav sektsioon
# Add here commands to configure the package.
aclocal-1.8 && automake-1.8 && autoconf
CC=$(CC) LDFLAGS=$(LDFLAGS) ./configure \
   --host=$(DEB_HOST_GNU_TYPE) \
   --build=$(DEB_BUILD_GNU_TYPE) \
   --prefix=/ \
   --mandir=/usr/share/man \
   --infodir=/usr/share/info \
   --disable-auto-linux-mem-opt \
   --enable-diskless \
   --enable-eepro100 \
   --enable-rtl8139 \
   --enable-3c90x
  1. bash$ dpkg-buildpackage -rfakeroot
  2. mõnel juhul võiks bootloaderi vahele jätta ja lasta otse DCHP serveril PXE'le tuum kätta anda, aga vähemalt minu ühel seesugusel katsel teatas arvuti seepeale, et mälust ei piisanud

Linuxi Root-over-NFS arvutile on sobilik ühendada külge swap üle iSCSI.

TODO: palad teemadel: dhcp, tftp, nfs, debiani pakettide tekitamine, tuuma kompileerimine, debiani paketihaldus, grub, debootstrap

Kasulikud lisamaterjalid