Erinevus lehekülje "Gentoo install" redaktsioonide vahel

Allikas: Kuutõrvaja
(Gentoo startimine üle võrgu PXE, TFTP ja NFS abil)
(Gentoo startimine üle võrgu PXE, TFTP ja NFS abil)
564. rida: 564. rida:
 
*võimalus kiirelt konfi muutes bootida ühes paraleelseid servereid balancingu jaoks või uute teenuste
 
*võimalus kiirelt konfi muutes bootida ühes paraleelseid servereid balancingu jaoks või uute teenuste
 
*nfsi üle käib vaid serveri boot, seega nfs pudelikaelaks ei jää hilisemal kasutamisel
 
*nfsi üle käib vaid serveri boot, seega nfs pudelikaelaks ei jää hilisemal kasutamisel
 +
*Kokkuvõtteks 2a juba see käigus EENeti kõige rasvasematel teenustel ja ühe korra päästis selline süsteem pigem ülikiirelt paljude kasutajatega süsteemi jukerdavalt raualt, teinekord võimaldas aga liiga rasvase veebi jaoks startida sama konfiga uue serveri spetsiaalselt nimetatud teenusele
  
 
Skeem mille alusel süsteem tööle hakkab
 
Skeem mille alusel süsteem tööle hakkab

Redaktsioon: 14. september 2010, kell 16:36

Sissejuhatus

installiks valmistumine

Sisestame installi cdplaadi mille saame muretseda lehelt http://www.gentoo.org/main/en/where.xml

Võimalik on kasutada livecd'd kus boodib ülex xfce graafiline keskkond ning saab kasutada graafilist installerit kuid gentoo põhiline positiivne omadus ongi ju tema võimalikult detailses ning kasutaja enda tehtavas käsurea installis, kus võimalik kogu süsteem äärmiselt minimaalselt ning enda nõudmistele vastavalt häälestada.

Seega boodime masina mida plaanime installida plaadilt üles ja Seadistame ssh ning võrgu

Esimeseks tuleks kontrollida kas tunti kaart ikka ära

# ifconfig -a
eth0      Link encap:Ethernet  HWaddr 00:21:5a:f5:31:e7
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Interrupt:39

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)


kui võrgus on töötav DHCP server on tõenäoline, et install CD on juba saanud IP automaatselt, kui ei seadistame need käsitsi

# ifconfig eth0 192.168.1.10 netmask 255.255.255.0
# route add default gw 192.168.1.254
# echo "nameserver 192.168.1.1" > /etc/resolv.conf

Tekitame kasutaja sest Gentoos ei peeta root kasutajaga otse logimist heaks tooniks, vajalik on luua eraldi kasutaja kellega SU käsuga minna admin useriks, kasutaja peab olema seejuures nagu FreeBSDsgi wheel grupis

# adduser kasutaja
# passwd kasutaja
# usermod -G wheel kasutaja

ning lõpuks seadistame ruudu parooli

# passwd root

Seejärel stardib ssh

# /etc/init.d/sshd start
..genereeritakse võtmed starditakse ssh

..ja nüüd võime minna teise masina taha kus saame võtta mugavalt ette ssh konsooli ning manualid

Install

Partitsioonide - failisüsteemide loomine ja mountimine

Kuna näites kasutatud masina näol on tegemist HP serveriga siis kettaseadme rajaks on /dev/cciss/c0d0

Esimesena tuleks luua partitsioonid

# fdisk /dev/hda
  • p näitab partitsioone
  • n teeb uue partisiooni - küsitakse kas tegemist extended või primary partitsiooniga ning algust ja lõppu kus esimese võib jätta nagu ise

pakub ning teise puhul defineerida soovitud suuruse näiteks +512M

  • d kustutab partitsiooni

n puhul küsitakse partitsiooni algust ja lõppu

Loome endale kolm partitsiooni /boot / (juur) /var ning swap

  • /boot suuruseks 100-300mega
  • / suuruseks paar giga
  • swap piisab kahest gigast igati tänapäevastel masinatel
  • /var samamoodi kuus seitse giga
  • ülejäänud ruum kõik /srv alla


Device Boot      Start         End      Blocks   Id  System
/dev/hda1               1          13      104391   83  Linux
/dev/hda2              14         274     2096482+  82  Linux swap / Solaris
/dev/hda3             275        1602    10667160   83  Linux
/dev/hda4            1603       72937   572998387+   5  Extended
/dev/hda5            1603        4205    20908566   83  Linux

Partitsioonide skeem siis järgnev

* /dev/hda1 -- /boot
* /dev/hda2 -- (swap)
* /dev/hda3 -- /
* /dev/hda4 -- /var
* /dev/hda5 -- /usr

Kui partitsioonid tehtud võib vajutada w millejärel partitsioonitabel kirjutatakse paika

Ext2 /boot partitsioonile sest Grub veel veidi aeg tagasi sisaldas bugi muult bootimisel

# mke2fs /dev/sda1

Ext3 juurfailisüsteemile

# mke2fs -j /dev/sda3

Tekitame swapi

# mkswap /dev/sda2

Ja aktiveerime selle

# swapon /dev/sda2 

Moundime tekkinud partitsioonid

# mount /dev/hda3 /mnt/gentoo
# mkdir /mnt/gentoo/boot
# mount /dev/hda1 /mnt/gentoo/boot
# mount /dev/hda5 /mnt/gentoo/var

stage && portage lahtipakkimine

Stage on Gentoo arendajate poolt kokkupandud tarball mis sisaldab kogu baassüsteemi koos utiliitide ning init skriptidega säästes nii kasutaja nende eraldi tõmbamisest ja kompileerimisest

Tõmbame alla stage mis sisaldab kogu gentoo worldi, ehk kõiki gnu vajalikke utiliite /programme juba kokkupandud paketina (init, bash jms töövahendid)

hetkel värskeima stage 64bitise opsüsteemiga arvuti jaoks leiab kaustast http://distfiles.gentoo.org/releases/amd64/current-stage3/

Paigaldame ka 64 bitise värskeima stage

# cd /mnt/gentoo
# wget http://distfiles.gentoo.org/releases/amd64/current-stage3/stage3-amd64-20100514.tar.bz2

Ning pakime stage lahti

# tar xvjpf stage3-*.tar.bz2

Seejärel edasiseks tegutsemiseks tuleb luua lahtipakitud keskkonna ümber chroot. Enne seda aga on vajalik mountida veel proc ning dev

# mount -t proc proc /mnt/gentoo/proc
# mount -o bind /dev /mnt/gentoo/dev

Ja kopeerida resolv.conf selleks ,et nimelahendused toimiksid

# cp -L /etc/resolv.conf /mnt/gentoo/etc/

Nüüd võime ehitada enda ümber chroot keskkonna ,et jätkata süsteemi seadistust Chroot on vajalik selleks, et kõik edasised käsud mis anname täidetaks kaustas /mnt/gentoo mitte aga livecd keskkonnas.

# chroot /mnt/gentoo /bin/bash
# env-update && source /etc/profile
>>> Regenerating /etc/ld.so.cache...

Häälestamine ning lisaprogrammide paigaldus

make.conf on minul selline

CHOST="x86_64-pc-linux-gnu"
CFLAGS="-O2 -pipe"
CXXFLAGS="${CFLAGS}"
MAKEOPTS="-j3"  
FEATURES="parallel-fetch -userfetch fixpackages"
USE="-X -kde -qt -gnome -gtk -gpm -ldap"
SYNC="rsync://ftp.eenet.ee/gentoo-portage"
GENTOO_MIRRORS="http://ftp.eenet.ee/pub/gentoo/ http://ftp.linux.ee/pub/gentoo/distfiles/ ftp://ftp.belnet.be/mirror/rsync.gentoo.org/gentoo/"

CHOST on meie masina arhidektuur MAKEOPTS abil seme mitme threadiga kompileeritakse USE abil mis on globaalsed kompileerimise seaded GENTOO_MIRRORS abil defineerime lähimad serverid meile

Ning paigaldame värske portsude puu

emerge --sync

Profiili linkimine

make.profile -> ../usr/portage/profiles/default/linux/amd64/2008.0

Lokaalid

Kuna oleme eestlased ja tahaks täpilisi märke näha siis

# nano -w /etc/locale.gen

ja lisame sinna

en_US ISO-8859-1
en_US.UTF-8 UTF-8
en_GB.UTF-8 UTF-8
et_EE ISO-8859-1
et_EE.UTF-8 UTF-8
Ajatsooni seadistamine

Et kella peale ei kobisetaks siis ajatsoon korrektseks

# echo 'TIMEZONE="Europe/Tallinn"' >> /etc/conf.d/clock
fstab seadistus
/dev/hda1       /boot     ext2    noatime     1 2
/dev/hda2       none      swap    sw                 0 0
/dev/hda3       /         ext3    noatime            0 1
/dev/hda5       /var         ext3    noatime            0 1
võrgu seadistus

Avame võrgu seadistusfaili

# nano /etc/conf.d/net
config_eth0=( "192.168.1.20/24" )
routes_eth0=( "default via 192.168.1.254" )
# rc-update add net.eth0 default
 * net.eth0 added to runlevel default

Tuleb silmas pidada, et nii tuleb kõik teised täiendavad võrguseadmed samuti lisada default runlevelile näiteks eth1 seade

Kui seade ei tulnud kohe peale booti üles tuleb tekitada vajakli symlink

# ln -s /etc/init.d/net.lo /etc/init.d/net.eth0
Teenused toimima

Et ssh stardiks ka peale booti st

 rc-update add sshd default
  * sshd added to runlevel default

Põhimõtteliselt teeb see sama mis ln -vs /etc/init.d/sshd /etc/runlevels/default/

Olulised komponendid on syslog ja cron

# emerge syslog-ng
# rc-update add syslog-ng default
# emerge vixie-cron
# rc-update add vixie-cron default

Sama käsuga käib üldiselt kõikide teenuste Gentoos vaikimisi startima seadistamine nt rc-update add apache default jne eemaldada saab mingi teenuse käsuga näiteks rc-update del postfix

Ja siis lisaks veel

# emerge gentoolkit

Mis annab süsteemile lisaks equery ja glsa-checki mõlemad väga vajalikud abivahendid

http://www.gentoo.org/doc/en/gentoolkit.xml

Kerneli ehitamine

emerge gentoo-sources
cd /usr/src/linux
make menuconfig

eriti tuleks tähelepanu pöörata ,et võrgu ning ketaste või kettakontrollerite draiverid oleksid sees kuna ilma nendeta on tõenäoline ,et tuleb uuesti livecd bootida ja asuda kernelit tegema, teisi komponente saab paigaldada juba kiiremini. Antud HP juhul tuli kontrollida compaq array suppordi olemasolu

# make && make modules_install

Paigaldamiseks töötab kas käsk

# make install
sh /usr/src/linux-2.6.31-gentoo-r6/arch/x86/boot/install.sh 2.6.31-gentoo-r6 arch/x86/boot/bzImage \
		System.map "/boot"

Millega paigaldatalse kernel kausta /boot nimega /boot/vmlinuz-2.6.26-gentoo-r1

kuid võib kerneli ka käsitsi paika kopeerida näiteks sarnaselt

# cp arch/x86_64/boot/bzImage /boot/kernel-versioon

või x86 arhidektuuri puhul

# arch/i386/boot/bzImage /boot/kernel-versioon

Selleks ,et kõik arvuti küljes olevad seadmed identifitseerida tuleks paigaldada lspci tarkvara selleks tuleb paigalda pciutils pakett

emerge sys-apps/pciutils

Kasutamiseks öelda lihtsalt

# lspci
00:00.0 Host bridge: VIA Technologies, Inc. VT8377 [KT400/KT600 AGP] Host Bridge (rev 80)
00:01.0 PCI bridge: VIA Technologies, Inc. VT8237/VX700 PCI Bridge
00:09.0 Ethernet controller: Intel Corporation 82557/8/9/0/1 Ethernet Pro 100 (rev 08)
00:0b.0 Ethernet controller: Intel Corporation 82557/8/9/0/1 Ethernet Pro 100 (rev 08)
00:0c.0 VGA compatible controller: S3 Inc. ViRGE/DX or /GX (rev 01)
00:0f.0 IDE interface: VIA Technologies, Inc. VIA VT6420 SATA RAID Controller (rev 80)
00:0f.1 IDE interface: VIA Technologies, Inc. VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE (rev 06)
00:11.0 ISA bridge: VIA Technologies, Inc. VT8237 ISA bridge [KT600/K8T800/K8T890 South]
00:12.0 Ethernet controller: VIA Technologies, Inc. VT6102 [Rhine-II] (rev 78)

Abiks on ka lsmod käsk

# lsmod
Module                  Size  Used by
vzethdev               12288  0
simfs                   7900  1
vznetdev               17540  2
vzrst                 117652  0
vzcpt                  99748  0
tun                    14084  2  vzrst,vzcpt
vzdquota               37240  1 [permanent]
vzmon                  24968  5 vzethdev,vznetdev,vzrst,vzcpt
vzdev                   6664  4 vzethdev,vznetdev,vzdquota,vzmon
ipv6                  222988  23 vzrst,vzcpt,vzmon
ata_generic             8580  0
pata_acpi               7680  0
sata_via               10884  0
libata                133844  3 ata_generic,pata_acpi,sata_via
scsi_mod              123260  1 libata
i2c_viapro             10772  0
i2c_core               21396  1 i2c_viapro
e100                   33164  0
via_rhine              23048  0
s3fb                   19328  1
mii                     8192  2 e100,via_rhine
svgalib                11136  1 s3fb
ide_cd_mod             30852  0
cdrom                  32792  1 ide_cd_mod
pcspkr                  6272  0
vgastate               11648  1 s3fb
button                 10000  0

Kasutada võib ka alguses genkernelit http://www.gentoo.org/doc/en/genkernel.xml

Bootloaderi paigaldamine

# emerge grub

Loome faili mtab, see fail annab infot mis kettaseamed on hetkel süsteemis mounditud

# grep -v rootfs /proc/mounts > /etc/mtab

Kontrollime, et grupi konfiguratsioonis on seadme mapimine tehtud õigele seadmele. See peaks olema järgnev

# nano /boot/grub/device.map
(hd0)     /dev/hda

HP servero puhul peab seadistus olema selline

(hd0)     /dev/cciss/c0d0

Ning stardile grub'i interaktiivse shelli kus muudame ketta bootivaks

# grub --device-map /boot/grub/device.map

Kus boot partitsioon asub

grub> root  (hd0,0)
root  (hd0,0)
 Filesystem type is ext2fs, partition type 0x83

Installime mbr'i grubi

grub> setup (hd0)

Edasi vajalik ka grubi konfiguratsiooni tekitamine

# nano /boot/grub/grub.conf
timeout 5
default 0
title  GNU/Linux
root (hd0)
kernel /boot/bzImage root=/dev/hda1


Kui kasutuses HP server siis on root kujul /dev/cciss!c0d0p1

kasutajad ja paroolid süsteemile

# sudo useradd kasutaja
# sudo passwd kasutaja

Kuna Gentoos nagu ka FreeBSD's peab kasutaja su abil ruuduks moondumiseks olema wheel grupis siis lisame ta ka sinna

# sudo usermod -G wheel kasutaja

Viimaks root parool

# passwd 

unmount & reboot!

Installi järgsed tegevused

Peale installi oleks soovitatav kogu world uuesti buildida. Piisab muidugi küll kuid esialgu glsa teatatud vigadega pakettide uuendamisest kuid mõni öö võiks tõsiselt mõelda ka kõige uuesti ehitamisele.

  • enne tuleks kindlasti paigaldada gentoolkit mis tekitab revdep käsu
# emerge --update --newuse --deep world
# emerge --depclean
# revdep-rebuild

ning lõpuks uuendame seadistusfaile

# etc-update

Kui emerge teatab ,et pakett näiteks tavaline editor on maskitud tuleks selle nimi lisada faili /etc/portage/package.unmask

>=app-editor/nano

Ja üritada uuesti tarkvara emergeda

Kui teatatakse ,et masked by keyword nt masked by: ~x86 keyword, siis tuleb faili /etc/portage/package.keywords lisada rida

app-editor/nano **

Seda võib teha automaatselt käsurealt süntaksi alusel

# echo "category/packagename **" >> /etc/portage/package.keywords

Kui veateateks masked by: EAPI 3

Aitab portage nimelise tarkvara uuendamine

# emerge portage

Abi saab üldiselt gentoo enda bugrepordi allikatest http://bugs.gentoo.org/

Gentoo uuendamisel pigem soovitaks siiski pidevat kogu süsteemi rebuildimist vältida ning uuendada aegajalt vaid turvavigadega pakette, järgneva käsuga saab seda kontrollida

# glsa-check -l affected
[A] means this GLSA was already applied,
[U] means the system is not affected and
[N] indicates that the system might be affected.

selleks ,et gentoo iga nädalaselt saadaks teateid turvavigadega pakettidest võib lisada crontabi

40 22 * * 6 /usr/bin/emerge --sync > /dev/null && /usr/bin/glsa-check -m affected

Tarkvara haldus

Soovies näha mis erinevaid tarkvara nt php versioone installida saab aitab käsk

# equery l -p dev-lang/php
[ Searching for package 'php' in 'dev-lang' among: ]
 * installed packages
 * Portage tree (/usr/portage)
[-P-] [  ] dev-lang/php-5.2.9-r2 (5)
[-P-] [  ] dev-lang/php-5.2.10 (5)
[-P-] [M~] dev-lang/php-5.2.10-r1 (5)
[-P-] [M~] dev-lang/php-5.2.10-r2 (5)
[-P-] [  ] dev-lang/php-5.2.11 (5)

M~ tähendab, et pakett on maskitud

Pikemalt juttu aadressilt

http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?part=2&chap=3

Veel pisemat lisaseadistust

Hostname /etc/conf.d/hostname

HOSTNAME="zoo.loomaaed.ee"

ntpdate käsu saamiseks vaja emergeda ntp

Kui vaja dhcp clienti siis selleks tuleb paigaldada dhcpcd pakett

Alias ip saab lisada käsuga

ifconfig eth0:0 192.168.1.45 up

Seejuures on igasuguste võrguseadistuste juures abiks fail /etc/conf.d/net.example

süsteemi info vaatamiseks on head käsud

# grep bogo /proc/cpuinfo
bogomips        : 4617.99
bogomips        : 4592.88
bogomips        : 4592.78
bogomips        : 4592.77
bogomips        : 4588.57
bogomips        : 4588.58
bogomips        : 4588.56
bogomips        : 4588.57
# grep MemTotal /proc/meminfo
MemTotal:      8179900 kB
# emerge hdparm 
# hdparm -tT /dev/cciss/c0d0
/dev/cciss/c0d0:
 Timing cached reads:   2762 MB in  2.00 seconds = 1381.99 MB/sec
 Timing buffered disk reads:  538 MB in  3.01 seconds = 178.47 MB/sec

inittab sisaldab mõttetuid konsoole, korjame need ära

sed -i -e 's|^c[2-6]:2345:|#&|' /etc/inittab

TCP syncookie ja suured PIDid failis /etc/sysctl.conf

net.ipv4.tcp_syncookies = 1
kernel.pid_max = 999999

Eelinstalleeritud Gentoo liigutamine ühest serverist teise

Vahel võib tekkida süsteemiga ikka juhuseid kui otstarbekam on update hoitud süsteemi mitte uuesti nullist paigaldada ning seadistada vaid hoopis kopeerida ümber

Selleks vajalikud sammud

1. bootida uus arvuti mõnelt live cd'lt või rescue plaadilt, Linuxi versioon ei pea olema üldse Gentoo selleks toiminguks

2. Fdiski käsu abil tekitada kettale partitsoonid, neile omakorda failisüsteemid ja mountida nad külge /mnt/boot, /mnt/var ...

3. rsyncida info vanast serverist näiteks sobiks selleks hästi käsk

rsync -av --numeric-ids -d -H --exclude-from=exclude / root@ip:/mnt/boot/

exclude fail sisaldas minul järgnevaid ridu, üldiselt võib sinna kirjutada kõik mounditud failisüsteemid

/var/
/srv/
/proc/
/dev/

4. fstab faili tekitamine ja vastavalt kettatähitstele ja partitsioonidele kohandamine

5. grubi initsialiseerimine, vt ülespoole gentoo installi kus õpetus kuidas seda teha

6. luua kaust /proc ja /dev ning anda MKDEV käsk, kui kasutatud mitte Gentoo live cd'd siis võib jääda dev sisu poolikuks ning kui süsteem bootides teatab näiteks unable to open initial console, siis aitab käsk

mknod /dev/console c 5 1

Peale rebooti peaks olema valmis süsteem

Gentoo startimine üle võrgu PXE, TFTP ja NFS abil

  • võimalus startida testserver enne production serverit, ja proovida kas nt meilitarkvara töötab veeb töötab
  • upgrademise lihtus, ühe buildi e skripti käivitamisega saab värske tarkvara kõik peale ja viimasepeal süsteemi
  • võimalus kiirelt konfi muutes bootida ühes paraleelseid servereid balancingu jaoks või uute teenuste
  • nfsi üle käib vaid serveri boot, seega nfs pudelikaelaks ei jää hilisemal kasutamisel
  • Kokkuvõtteks 2a juba see käigus EENeti kõige rasvasematel teenustel ja ühe korra päästis selline süsteem pigem ülikiirelt paljude kasutajatega süsteemi jukerdavalt raualt, teinekord võimaldas aga liiga rasvase veebi jaoks startida sama konfiga uue serveri spetsiaalselt nimetatud teenusele

Skeem mille alusel süsteem tööle hakkab

Antud näide koosneb kolmest serverist A. bootserverist, B. testserverist ja C. Ametlikust tööserverist

            ____
           |    | A (Bootserver kus asetsevad NFS, DNCP, TFTPD teenused)
           |____| 192.168.0.10

       ....              
        Sisevõrk....
           ..... 
    ____          ____
   |    |B       |    |C        (PXE bootivad serverid)
   |____|        |____|

192.168.1.20    192.168.1.21 

Vajalik NFS toega kernelit bootserverile.

Veel üks skeem vabriku tööst

Vabrikb.jpeg

Gentoo paigalduse skript

Skriptid jagunevad üldiselt järgmise skeemi alusel

Vabrika.jpg

Kuna Gentoo paigaldus võtab isegi eksperdil aega mitu tundi on mõistlik see paljude serverite puhul automatiseerida bash skripiga. Järgnev skript tekitab kettale /srv/server kataloogi millelt saab bootida juba üle NFSi

 #!/bin/bash                                      
 
 PXEROOT="/srv/server/"
 STAGE="/srv/gentoo/stage3-amd64-20100429.tar.bz2"
 NFS_SERVER="192.168.1.10"
 ROOTPW="parool"
 NS="192.168.14"

 # kontrollime failide kaustade olemasolu 
 [ -z "$PXEROOT" ] && error "Missing install root (PXEROOT). Terminating!"
 [ -f "$STAGE" ] || error "Missing STAGE tarball $STAGE"

 echo "Extracting stage: $STAGE ..."                    
 tar xjf $STAGE -C $PXEROOT                             
 [ $? -ne 0 ] && error "Cannot extract tarball [$STAGE] into [$PXEROOT]"
 
 # Loome /usr/portage and /etc/portage directories, vajalikud emerge jaoks
 [ -e $PXEROOT/usr/portage ] || mkdir -pv $PXEROOT/usr/portage                
 [ -e $PXEROOT/etc/portage ] || mkdir -pv $PXEROOT/etc/portage                
 
 # Loome minimaalse /dev haru
 [ -e $PXEROOT/dev ] || mkdir -pv $PXEROOT/dev
 ( cd $PXEROOT/dev && ../sbin/MAKEDEV std )   
 
 # Seadistame ajatsooni
 rm -f $PXEROOT/etc/localtime
 ln -s /usr/share/zoneinfo/$TZONE $PXEROOT/etc/localtime
 echo "TIMEZONE=\"${TZONE}\"" >> $PXEROOT/etc/conf.d/clock
 
 # Süsteemi charset on UTF-8
 echo 'LC_ALL="en_US.utf8"' >> $PXEROOT/etc/env.d/02locale                                                  
 
 # Täidame resolv.conf faili
 echo "domain $DOMAIN" >  $PXEROOT/etc/resolv.conf
 echo "search $DOMAIN" >> $PXEROOT/etc/resolv.conf
 echo "nameserver $NS" >> $PXEROOT/etc/resolv.conf
                                                              
 # Paigaldame mõned fundamentaalsed paketid, kuna see töö tuleb teha chroot keskkonnas tuleb 
 # siin veidi trikitada, esiteks tekitame pxeroot alla skripti mis sisaldab vajalikke 
 # käske ning seejärel käivitame selle skripti chroot keskkonnas
 cat > $PXEROOT/paigalda.sh  <<EOT  
 emerge mail-mta/postfix sys-process/vixie-cron app-admin/syslog-ng
 # NFS client needs portmap
 emerge net-nds/portmap net-fs/nfs-utils sys-apps/kexec-tools
 EOT                            

 chmod 755 $PXEROOT/paigalda.sh
 mount --bind /usr/portage $PXEROOT/usr/portage
 mount -t proc none $PXEROOT/proc
 chroot $PXEROOT /paigalda.sh
 umount -f $PXEROOT/proc
 umount -f $PXEROOT/mnt/pkgcache
 umount -f $PXEROOT/usr/portage
 rm -f $PXEROOT/paigalda.sh
 ln -vs /etc/init.d/{vixie-cron,syslog-ng,sshd} $PXEROOT/etc/runlevels/default/
                                                
 # Kexec vajab kernelit, kernel tuleb eelnevalt valmis buildida ja patchida      
 cp -rp /srv/kernel/kern-2.6.32-unionfs $PXEROOT/bzImage
 
 # Moodulite otsimise vältimiseks
 echo 'CDBOOT="yes"' >> $PXEROOT/etc/conf.d/modules
 echo 'CDBOOT="yes"' >> $PXEROOT/etc/conf.d/bootmisc
 install -D /dev/null $PXEROOT/lib/modules/2.6.32-gentoo/modules.dep
 
 # Võrguseaded tulevad DHCPlt
 echo 'config_eth0=( "noop" )' > $PXEROOT/etc/conf.d/net 
                                     
 # checkroot gets error after 'rm' and halts the boot
 sed -i -e 's|rm -f /etc/mtab|#rm -f /etc/mtab|' $PXEROOT/etc/init.d/checkroot
 
 # Speed up booting
 sed -i  -e 's|^svcmount="no"$|svcmount="yes"|' $PXEROOT/etc/conf.d/rc
 
 # To not make persistent rules onto readonly disk
 > $PXEROOT/lib64/udev/move_tmp_persistent_rules.sh
 
 # fstab fail
 cat > $PXEROOT/etc/fstab <<EOT
 ${NFS_SERVER}:${PXEROOT%.tmp} / nfs ro 0 0
 proc /proc proc defaults 0 0              
 tmpfs /dev/shm tmpfs defaults 0 0         
 EOT                                       
                                                               
 # SSHD võtmed                       
   /usr/bin/ssh-keygen -t rsa1 -b 1024 -f $PXEROOT/etc/ssh/ssh_host_key -N ''
   /usr/bin/ssh-keygen -d -f $PXEROOT/etc/ssh/ssh_host_dsa_key -N ''         
   /usr/bin/ssh-keygen -t rsa -f $PXEROOT/etc/ssh/ssh_host_rsa_key -N ''     
 
 # Sätime root kasutaja parooli
 pw=`ruby -e "print '${ROOTPW}'.crypt('\\$1\\$ABcdefGH\\$')"`
 sed -i -e "1 s|^root:\*:|root:${pw}:|" $PXEROOT/etc/shadow
 
 
 # Suuname kirjutatavad failid ümber /fstmp alla
 mkdir $PXEROOT/fstmp/{tmp,run,lock}
 rm -rf $PXEROOT/tmp
 ln -s fstmp/tmp $PXEROOT/tmp
 rm -rf $PXEROOT/var/tmp
 ln -s ../fstmp/tmp $PXEROOT/var/tmp
 rm -rf $PXEROOT/var/run
 ln -s ../fstmp/run $PXEROOT/var/run
 rm -rf $PXEROOT/var/lock
 ln -s ../fstmp/lock $PXEROOT/var/lock
 rm -f $PXEROOT/etc/mtab
 ln -s ../proc/mounts $PXEROOT/etc/mtab
 chmod 711 $PXEROOT/fstmp
 
 # init skript rc-extra mis tekitab tmpfs failisüsteemi ajutiseks hoidlaks
  cat > $PXEROOT/etc/conf.d/rc-extra <<'EOT'
  if [[ $1 = "sysinit" && ! -f /fstmp/.fstmp ]]; then
   mount -n -t tmpfs -o size=256m,nodev,noexec,nosuid temp /fstmp
   mkdir /fstmp/{tmp,run,lock,log,mail}
   chmod 711 /fstmp
   chmod 1777 /fstmp/tmp
   chmod 755 /fstmp/{run,lock,log}
   mount -n -t unionfs -o dirs=/fstmp/log=rw:/var/log=ro none /var/log
   if [ -d /var/spool/postfix ]; then
     mount -n -t unionfs -o dirs=/fstmp/mail=rw:/var/spool/postfix=ro none /var/spool/postfix
   fi
   touch /fstmp/.fstmp
   echo "/fstmp mounted."
 fi
 EOT
 
 # Tühjad logfiles
 > $PXEROOT/var/log/dmesg
 > $PXEROOT/var/log/lastlog
 > $PXEROOT/var/log/messages
 > $PXEROOT/var/log/wtmp

DHCP seadistamine

Paigaldame dhcp serveri, võib paigaldada ka mingi teise lemmik dhcp serveri erinevalt selles näites esitatust

emerge dhcp

/etc/dhcp/dhcpd.conf

defineerime siin ära esiteks dns serveri, tftp serveri, pxekerneli nime ja kaks masinat mis sellelt boodivad, test serveri ja teenuste serveri

option domain-name "zoo.ee";                                          
option domain-name-servers 192.168.1.1;                         
default-lease-time 14400;
max-lease-time 28800;    
authoritative;
ddns-update-style none;
log-facility local7;                                     
                                                               
group {
  next-server 192.168.1.10;
  server-name "bootserver";
  filename "pxelinux.0";  
  host vabrikutest {                              
     hardware ethernet 00:15:10:94:72:01;
    fixed-address 192.168.0.20;            
  }                                      
  host vabrikuserver {                          
    hardware ethernet 00:23:B9:14:8C:BC; 
    fixed-address 192.168.0.21;            
  }                                                                       
}

Sedistame võrgukaardi millel dhcp kuulab

/etc/conf.d/dhcp

IFACE="eth1"

TFTPD

paigaldame ftpd tarkvara

emerge app-admin/tftp-hpa

Määrame ära tftpd töökausta asukoha ja pordid/ipd mida ta kuulab

/etc/conf.d/in.tftpd

INTFTPD_PATH="/srv/tftproot/"
INTFTPD_OPTS="-R 4096:32767 -s ${INTFTPD_PATH} -a 192.168.0.10"

PXElinux ja selle konfiguratsioon

/srv/tftproot/ kausta tekitame esiteks unionfs'iga patchitud kerneli, pxelinux.0 faili ja kausta pxelinux.cfg kuhu tekitame iga masina kohta tema MAX aadressi nimelise konfiguratsioonifaili

pxelinux.0 tuleb paketist

# emerge syslinux

Paigaldame selle õigesse kausta

# cp /usr/share/syslinux/pxelinux.0 /srv/tftproot
# mkdir /srv/tftproot/pxelinux.cfg
# touch /srv/tftproot/pxelinux.cfg/default

PXE otsib pxelinux.cfg/ kaustast kahte tüüpi konfifaile, esieks mac aadressi kujul ja teiseks hexadecimal kujul ip aadresse, selles näites kasutame füüsilse aadress nimelisi konfiguratsioonifaile

Näiteks vabrikutesti füüsiline aadress on 00:15:10:94:72:01; ning fail peab olema siis 01-00-15-10-94-72-01, põhiline on kirjutada mac aadressi ette 01 ja asendada koolonid kaldkriipsudega

Faili sisuks kirjutame esiteks kerneli nime ja root failisüsteemi asukoha ehk ip ja jaotise

DEFAULT /kern-2.6.32-unionfs
APPEND ip=dhcp root=/dev/nfs nfsroot=193.168.0.10:/srv/vabrikutest

Seadistame NFS serveri, tekitame selle konfiguratsiooni kaks järgnevat rida

Bootivate arvutite kernel

Vaja tekitada bootiv kernel mis unionfsiga patchitud

Tõmbame alla värske kerneli koodi, hetkel viimaseks Gentoo portages 2.6.34-r1

# emerge  gentoo-sources

Liigume kausta kuhu emerge paigaldas kerneli koodi

# cd /usr/src

Liigutame kerneli ümber uue nime alla, igasjuhuks

# cp -rp linux-2.6.34-gentoo-r1 linux-2.6.34-gentoo-r1-unionfs 

Liigume aadressile http://www.fsl.cs.sunysb.edu/project-unionfs.html ja tõmbame sealt enda kerneli versioonile sobiva paiga NB versioonid peavad kindlasti klappima

# wget http://download.filesystems.org/unionfs/unionfs-2.x/unionfs-2.5.5_for_2.6.34.3.diff.gz

Liigutame patchi kerneli kausta

# mv unionfs-2.5.5_for_2.6.34.3.diff.gz linux-2.6.34-gentoo-r1-unionfs

Ja anname käsu

# gzip -dc unionfs-*.diff.gz | patch -p1

Ning seejärel kompileerime kerneli

Serverivabriku buildimis skriptis tuleb muuta veel vastavaks rida

install -D /dev/null $PXEROOT/lib/modules/2.6.32-gentoo/modules.dep

PS. Kui fireholi käivitamisel kurdab, et kerneli võiks /proc/config toega kokku ehitada. Viimane näitab mis konfiguratsiooniga on kernel nimelt kokku ehitatud. Seadistada saab seda kerneli kompileerimisel General setup alt

$ head /proc/config
CONFIG_X86=y
CONFIG_UID16=y
CONFIG_EXPERIMENTAL=y
CONFIG_MODULES=y
CONFIG_MODVERSIONS=y
CONFIG_KMOD=y
CONFIG_M386=y
CONFIG_X86_L1_CACHE_SHIFT=4
CONFIG_RWSEM_GENERIC_SPINLOCK=y
CONFIG_X86_PPRO_FENCE=y

Firehol võib moodulite kohta infot küsides lihtsalt netist bootitud masina muidu hanguma panna

proc/config lahendust saab kasutada ka soovides kompileerida täpselt samasugust kernelit kui originaal, lihtsalt tuleb anda käsk

zcat /proc/config.gz > /usr/src/linux/.config

Pole vaja "make install" ega "make modules_install" kirjutada. Fail arch/x86/boot/bzImage tuleb kopeerida /srv/tftproot/ alla ja /srv/tftproot/pxelinux.cfg/servertest esimesel real viidata.

NFS server

# emerge nfs-utils

/etc/exports

/srv/servertest 192.168.0.0/255.255.255.0(ro,sync,no_root_squash,no_subtree_check,no_acl)
/srv/vabrikuserver 192.168.0.0/255.255.255.0(ro,sync,no_root_squash,no_subtree_check,no_acl)

Stardime teenused

#rc-update add in.tftpd default

Paneme lõpuks kõik teenusd tööle

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

Reboodime enda testserveri ja hiljem põhiserveri

Alternatiiv kasutades pxegrubi pxelinux.0 asemel

# echo "sys-boot/grub netboot" >> /etc/portage/package.use
# emerge -av grub
# cp /usr/lib/grub/pxegrub /diskless/eta/boot/pxegrub
# nano -w /diskless/eta/boot/grub.lst

TODO

Võrgust veel lisalugemist

Jamadega jamamine

Kui emerge teatab

!!! Your current profile is deprecated and not supported anymore.
!!! Please upgrade to the following profile if possible:
       default/linux/x86/10.0/server

tuleb uuendada profiili, esiteks kirjutada käsk

eselect profile list

ning valida pakutud jimekirjast sobivam profiil ja anda käsk

eselect profile set <number>

Mille järel uuendatakse /etc/make.profiles linki

Lingid