Sare abiatze

**Sareko abiatzea** () sare batetik konputagailu bat abiaraztea da. Abiarazte metodo hori routerrek, disko gabeko lan estazioek eta konputagailu zentralizatuek (ordenagailu publikoak) erabil dezakete. Sareko arrankea diskoen biltegiratzearen kudeaketa zentralizatzeko erabiltzen da. Honi esker, mantenimendu kostua asko txikitu daiteke. Metodo hau ere clusterretan erabil daiteke, disko lokalak ez badira erabiltzen.

## Hardware euskarria 
Gaur egungo ordenagailu pertsonalek normalean haien firmwarean saretik arrankatzeko aukera ematen dute, maiz prearranke exekuzio ingurunearen (PXE) bidez. Makina batzuk diskete bat edo flash memoria batean instalatutako software bati esker saretik arrankatzeko gai dira, teknologia berezi baten bidez.

Sare lokalaren bitartez ordenagailu bat hasieratuz gero, sistema eragile oso bat ere, instalatu daiteke. Horretarako, PXE zerbitzari moduan lan egingo duen ordenagailu bat behar dugu, gero honetara bezeroa konektatuko delarik.

## Prozesua 
Kargatu behar den hasierako softwarea zerbitzari batetik kargatzen da sarera. Zerbitzari hau aurkitua izaten da broadcast edo multicast eginez, DHCP eskera bat bidaliz. Tipikoki hasierako software hau ez da kargatu beharreko sistema eragilearen irudi oso bat, zati bat baizik. Zati hau nahikoa da sistema eragilea hasieratzeko eta arranke prozesuaren kontrola izateko, saretik arrankearekin jarraituz.

Prozesua zehaztasun gehiagorekin begiratuz gero, PXE arranke protokoloa kontuan hartu behar dugu, hau baita sareko arrankearen muina.

Lehenengo, sare lokalera konektatuta dagoen gure PC-a, bezeroa izango dena, DHCP eskaera bat egingo dio DHCP zerbitzariari, eta honek IP helbide bat esleituko dio. PC-ak beste DHCP eskaera bat egingo du (broadcast) arranke zerbitzariaren ip helbidea lortzeko.

Ondoren, PC-ak NBP-aren (Network Bootstrap Program) fitxategia behar duenez, DHCP eskaera berezi bat, BINL deritzona, egingo dio arranke zerbitzariari. BINL-a (Boot Image Negotiation Layer) zerbitzu bat da Network Bootstrap program fitxategiaren izena daukana, beraz, BINL zerbitzuak NBP-aren fitxategiaren izena bidaliko dio PC-ari. Behin izena edukita, TFTP eskaera bidez fitxategi hau eskatuko dio zerbitzariari, eta honek TFTP motako paketeak bidaltzen joango da, NBP programarekin. Orduan, PC-ak pakete hauek jaso ahala memorian gordeko ditu programa osoa memorian izan arte. Amaitzeko, kontrola programa honi pasako zaio, eta honen bidez TFTP bidez beharrezko fitxategi edo/eta programak deskargatzen joan daiteke.

Prozesu hau guztia ondorengo irudi honetan ikus daiteke:

## Konfigurazio orokorra 
Hona hemen aurreko prozesua inplementatzeko behar duguna:
* Zerbitzari bat (makina birtuala izan daiteke) GNU / Linux distribuzio bat izango da, hemen Debian Wheezy erabili da.
* Bezero bat minimo (makina birtuala), Ubuntu Server 12.04 LTS edo Ubuntu Server 10.04 instalatuko da (hautazkoa).

Oharra: Gomendagarria da zerbitzariaren sistema eragilea eguneratuta izatea (apt-get update).

### Bezeroaren konfigurazioa 
Bezeroaren makinan sareko arrankea gaitu behar da, hau da, defektuzko arrankea izatea. Horretarako, konputagailu birtualaren BIOS menuan, sarea defektuzko hasieratze bidea izango dela adierazi behar da. Printzipioz, hori egitearekin nahiko izango litzateke bezero alde honetan.

### Zerbitzariaren konfigurazioa 
Zerbitzari honek bezeroei IP helbide lokal (pribatu) bat eta hasieratzeko beharko dituzten fitxategiak zerbitzatzeaz arduratuko da. Eginkizun horretaz arduratuko da PXE (Pre-boot Execution Enviroment) moduan ezagutzen den zerbitzua, hau da, DHCP zerbitzu bat IP helbideak esleitzeko. Bestalde, TFTP beste zerbitzu bat ere erabiliko da bezeroei arrankerako behar diren fitxategi minimoak bidaltzeko.
Aipatutako bi zerbitzu horiek martxan jartzeko ondoren erabiltzen diren pausoak jarraitu behar dira:

#### DHCP zerbitzua 
Aipatu den moduan, DHCP arduratuko da konektatzen diren bezeroen artean IP helbideak esleitzeaz. Hainbat aukera daude DHCP zerbitzari bat muntatzeko; hemen dnsmasq tresna erabiliko da:

```bash
apt-get install dnsmasq
```

Behin pakete instalatuta erabiliko den konfigurazioa ezarri behar da /etc/dnsmasq.conf fitxategian:

```bash
dhcp-range=172.16.86.150,172.16.86.250,12h
dhcp-boot=pxelinux.0
enable-tftp
tftp-root=/var/tftpd
```

Oharra: Lerroak deskomentatu behar dira.

* dhcp-range: IP helbideen tartea, bezeroei esleituko direnak. 12 ordu pasa ondoren helbideak eguneratuak izango dira (lease denbora).
* dhcp-boot: arranke artxiboak izango duen izena. Defektuz pxelinux.0 da.
* enable-tftp: TFTP zerbitzua gaitzea.
* tftp-root: artxiboak joango diren direktorioaren helbidea.

Zerbitzua martxan jartzeko hurrengo komandoa exekutatu behar da:

```bash
/etc/init.d/dnsmasq restart
```

#### TFTP zerbitzua 
TFTP fitxategien bidalketa ahalbitzen duen protokolo sinple bat da. Esan dugunez, zerbitzu hau behar da arrankean erabiliko diren fitxategi minimoak garraiatzeko. Aurreko atalan instalatu den tresnarekin, dnsmasq, TFTP zerbitzu bat integratuta dago, beraz, ez dugu beste softwarearen beharra.

#### NFS zerbitzua 
Aurreko pausoak betez gero, gure sistemak arrankerako behar diren fitxategi minimoak izango ditu. Gauza da, sistema eragile berria instalatzeko hainbat fitxategi behar direla, sistema eragilearen irudi oso bat hain zuzen ere. Helburu horrekin NFS zerbitzu bat erabiliko dugu, sistema eragile berria instalatzeko behar diren fitxategi guztiak bidaltzeko bezero den makinara.
Hauek dira jarraitu dugun komandoak:

Behar dugun softwarea instalatzeko:

```bash
apt-get install nfs-kernel-server
```

Behin instalatuta aukeratu behar dugu zein izango den kanpora exportatuko dugun direktorioa, horretarako:

```bash
nano /etc/exports
```

Eta hurrengo lerroa gehitu behar da:

```bash
/var/tftpd/ 172.16.86.128/24(ro,async,no_root_squash,no_subtree_check)
```

Oharra: zerbitzariaren ip helbidea eta maskara jarri behar dira.

Baliteke zerbitzuak berrabiarazi behar izatea:

```bash
service nfs-kernel-server restart
```

#### Syslinux 
Instalatuko dugun sistema eragileak “boot-eatzeko” aukera emateko pakete berri bat instalatu behar dugu eta haren fitxategi batzuk kopiatu gure TFTP zerbitzariaren karpetara:

```bash
apt-get install syslinux-common
mkdir -p /var/tftpd/pxelinux.cfg
cp /usr/lib/syslinux/pxelinux.0 /var/tftpd/
cp /usr/lib/syslinux/vesamenu.c32 /var/tftpd/pxelinux.cfg/
```

Aurreko guztia egin ondoren, bakarrik falta da nahi dugun sistema eragilearen .iso fitxategia deskargatzea. Behin ISO fitxategiak dauzkagula, hauek muntatu eta fitxategi guztiak kopiatu behar dira. Hau egiteko, komando hauek erabili daitezke:

```bash
mount -o loop -t iso9660 linux-live.iso /mnt
cp -a /mnt/. /var/tftpd/some/destination
umount /mnt
```

Oharrak: linux-live.iso muntatu nahi den gure iso artxiboaren izena da. Artxiboak /var/tftpd karpetan gorde behar direnez, linux banaketa eta bertsioen arabera ordenatu daitezke fitxategiak. Adibide bat hau izan daiteke:

```bash
/var/tftpd
├── pxelinux.0
├── pxelinux.cfg
│ ├── default
│ ├── ubuntu.menu
│ └── vesamenu.c32
└── ubuntu
    ├── 10.04.04
    │       └── i686
    └── 12.04.03
            └── i686
```

Orain, bezero batek saretik arrankatzen badu, TFTP bidez pxelinux.0 jasotzean, pxelinux.cfg/default atzitzen ere saiatuko da. Fitxategi hau ere modu egokian editatu behar da.
Fitxategi honen bidez, PXE zerbitzarira konektatzean ikusiko den menua konfiguratzen da. Hemen koloreak eta zenbait parametro aldatu daitezke, baina ez gara horretan sartuko. Adibide honetan Ubuntuko sarrera bat dago menuan, baina nahi adina gehitu daitezke. Aipagarriena MENU INCLUDEak dira. Hemen menu honetako sarrera bakoitzeko beste azpimenu bat dago, non banaketa bakoitzeko bertsio desberdinak ager daitezken, bezeroari aukeratzeko aukera emanez.

```bash
DEFAULT pxelinux.cfg/vesamenu.c32
TIMEOUT 600
ONTIMEOUT BootLocal
PROMPT 0
NOESCAPE 1
ALLOWOPTIONS 1
PROMPT 0

menu hshift 5
menu width 59

menu title PXE Server

menu color title * #FFFFFFFF *
menu color border * #00000000 #00000000 none
menu color sel * #ffffffff #76a1d0ff *
menu color hotsel 1;7;37;40 #ffffffff #76a1d0ff *
menu color tabmsg * #ffffffff #00000000 *
menu color help 37;40 #ffdddd00 #00000000 none
menu vshift 2
menu rows 20
menu helpmsgrow 25
# The command line must be at least one line from the bottom.
menu cmdlinerow 26
menu timeoutrow 26
menu tabmsgrow 28
menu tabmsg Press ENTER to boot or TAB to edit a menu entry

LABEL BootLocal
        localboot 0
        TEXT HELP
        Boot to local hard disk
        ENDTEXT
MENU BEGIN Ubuntu
MENU TITLE Ubuntu
        LABEL Previous
        MENU LABEL Previous Menu
        TEXT HELP
        Return to previous menu
        ENDTEXT
        MENU EXIT
        MENU SEPARATOR
        MENU INCLUDE pxelinux.cfg/ubuntu.menu
MENU END
```

Amaitzeko, bakarrik falta da sarrera bakoitzeko menua editatzea. Gure adibidea jarraituz, pxelinux.cfg/ubuntu.menu konfiguratzeko, hau idatz dezakegu:

```bash
LABEL 1
        MENU LABEL Ubuntu Server 12.04 LTS (32-bit)
        KERNEL ubuntu/12.04.03/i686/install/vmlinuz
        APPEND boot=install netboot=nfs nfsroot=172.16.86.128:/var/tftpd/ubuntu/12.04.03/i686/ initrd=ubuntu/12.04.03/i686/install/initrd.gz
        TEXT HELP
        Boot the Ubuntu Server 12.04 LTS 32-bit
        ENDTEXT
LABEL 2
        MENU LABEL Ubuntu Server 10.04 LTS (32-bit)
        KERNEL ubuntu/10.04.04/i686/install/vmlinuz
        APPEND boot=install netboot=nfs nfsroot=172.16.86.128:/var/tftpd/ubuntu/10.04.04/i686/ initrd=ubuntu/10.04.04/i686/install/initrd.gz
        TEXT HELP
        Boot the Ubuntu Server 10.04 LTS 32-bit
        ENDTEXT
```

Linux banaketa bakoitzeko sarrera bat sortu daiteke, non MENU LABELen izena adieraziko den. KERNELean bertsio horri dagokion kernelaren artxiboaren bidea zein den adierazi behar da (vmlinuz izeneko fitxategia), eta APPEND-en initrd-rekin berdina (initrd.gz edo konprimitutako artxiboa). Fitxategi guzti hauek ISO bakoitza muntatzean kopiatu ditugun lekuan egongo dira. Hemen ere boot-en artxibo hauek dauden karpetaren izena jartzea komeni da (boot=install gure kasuan). nfsroot-en gure PXE zerbitzariaren IP helbidea idatzi behar dugu.

Puntu honetan beharrezkoa den guztia konfiguratuta egongo da. dnsmasq zerbitzua berrabiaratu beharko da gure zerbitzarian eta bezero batetik konektatu ahal izango gara. Bezeroa lehen aipatutako moduan konfiguratuko da, eta pantaila hau agertu beharko zaigu:

Fitxategi:PXE_menua.png|PXE menua
Fitxategi:PXE_Ubuntu_menua.png|PXE Ubuntu menua

## Kanpo estekak 
* PXE eta sare kable bat, USB eta CD gabeko konputagailu bat arrankatzeko
* http://www.howtogeek.com/57601/what-is-network-booting-pxe-and-how-can-you-use-it/
* http://www.fogproject.org/wiki/index.php?title=Uploading_your_first_Image#Set_client_to_PXE_boot_in_BIOS
* http://blog.mister-muffin.de/2011/09/12/multiboot-live-systems-via-pxe/
* http://www.linuxjournal.com/magazine/pxe-magic-flexible-network-booting-menus?page=0,1
* https://web.archive.org/web/20131223052746/http://www.debian.org/releases/stable/powerpc/ch04s05.html.es
* http://es.wikipedia.org/wiki/Arranque_desde_red
* http://en.wikipedia.org/wiki/Network_booting