[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico] [volume] [parte]


Capitolo 308.   Avvio di terminali LTSP con GRUB

GRUB è un ottimo sistema di avvio, che normalmente viene diffuso con funzionalità limitate all'accesso ai dischi locali (capitolo 51). Tuttavia, a partire dai sorgenti è possibile generare componenti speciali per l'avvio di un sistema attraverso la rete. Sotto questo aspetto, GRUB si può integrare felicemente con LTSP.

Sono possibili due strade per avviare un sistema attraverso la rete con GRUB: si può creare un dischetto di avvio, in grado di usare il protocollo DHCP per configurarsi automaticamente e prelevare il kernel da avviare; si può usare come programma caricato attraverso PXE o Etherboot, allo scopo di fornire un menù di avvio, prima di passare al caricamento del kernel.

Questo capitolo si rifà a esempi che appaiono in altri capitoli su LTSP. A ogni modo, per poter comprendere il funzionamento di GRUB secondo quanto descritto in questo capitolo, occorre conoscere già il funzionamento di LTSP.

308.1   Sorgenti e compilazione

Come accennato nella premessa, per ottenere le funzionalità di GRUB relative alla rete, occorre ricompilare i sorgenti, che si possono ottenere da <ftp://alpha.gnu.org/gnu/grub/>. Il pacchetto dei sorgenti va estratto da qualche parte, anche senza privilegi particolari, quindi va configurato e compilato.

tar xzvf grub-n.n.tar.gz[Invio]

cd grub-n.n[Invio]

./configure[Invio]

make[Invio]

Per ottenere la gestione della rete, occorre dare delle opzioni al comando di configurazione. Lo script seguente serve a ottenere la maggior parte delle funzionalità di rete disponibili nella versione 0.97 di GRUB:

#!/bin/sh
#
make clean
#
if ./configure  --enable-diskless \
                --enable-3c509 \
                --enable-3c595 \
                --enable-3c90x \
                --enable-cs89x0 \
                --enable-davicom \
                --enable-depca \
                --enable-eepro \
                --enable-eepro100 \
                --enable-epic100 \
                --enable-3c507 \
                --enable-exos205 \
                --enable-ni5210 \
                --enable-lance \
                --enable-ne2100 \
                --enable-ni6510 \
                --enable-natsemi \
                --enable-ni5010 \
                --enable-3c503 \
                --enable-ne \
                --enable-complex-r12000-fix \
                --enable-wd \
                --enable-otulip \
                --enable-rtl8139 \
                --enable-sis900 \
                --enable-smc9000 \
                --enable-tiara \
                --enable-tulip \
                --enable-via-rhine \
                --enable-w89c840
then
    make
fi

Dopo la compilazione, non è necessario procedere all'installazione nel sistema, perché è sufficiente prelevare i file che servono. La tabella successiva riepiloga i file che possono essere utili.

File o directory Descrizione
grub/grub File eseguibile da usare per installare il sistema di avvio.
stage1/stage1 Settore di avvio, noto come file stage1.
stage2/stage2 Programma di avvio di secondo livello, noto come file stage2.
stage2/*_stage1_5 Programma di avvio intermedio per scopi particolari (di solito per consentire la lettura di un certo tipo di file system.
stage2/nbloader Programma di avvio di GRUB attraverso la rete, con la procedura Etherboot.
stage2/pxeloader Programma di avvio di GRUB attraverso la rete, con la procedura PXE.

308.2   Avvio post PXE o Etherboot

L'avvio di un terminale senza disco, attraverso Etherboot o PXE, può essere mediato da GRUB, in modo da poter offrire un menù di avvio prima del caricamento del kernel. In pratica, attraverso PXE o Etherboot si avvia un file di GRUB attraverso la rete; questo file ha funzionalità comparabili a quello di un file stage2 tipico di GRUB che legge il file di configurazione (di solito menu.lst) e si comporta di conseguenza.

Viene proposto un esempio che si basa sulle convenzioni di LTSP. Per prima cosa, presso l'elaboratore che offre il servizio TFTP, viene creata la directory /tftpboot/grub/, all'interno della quale vengono collocati i file nbloader, pxeloader e menu.lst. I file usati da LTSP per il caricamento del sistema si trovano nella directory /tftpboot/lts/; in particolare si intende utilizzare quanto si trova in /tftpboot/lts/n.n.n-ltsp-3/.

In base a queste premesse, il file /tftpboot/grub/menu.lst viene realizzato nel modo seguente:

default 0
bootp
title LTSP
kernel (nd)/lts/2.6.9-ltsp-3/bzImage-2.6.9-ltsp-3 root=/dev/ram0 rw init=/linuxrc
initrd (nd)/lts/2.6.9-ltsp-3/initrd-2.6.9-ltsp-3.gz

La configurazione del servente DHCP va modificata in modo da caricare uno dei file di GRUB (nbloader o pxeloader), specificando anche il file di configurazione da usare (menu.lst). Segue un esempio del file /etc/dhcp3/dhcpd.conf, del servente DHCP di ISC:

ddns-update-style none;
option option-128 code 128 = string;
option option-129 code 129 = text;
option option-150 code 150 = text;

subnet 172.17.0.0 netmask 255.255.0.0 {
  range 172.17.17.1 172.17.17.250;
  option broadcast-address 172.17.255.255;
  option routers 172.17.1.254;
  option domain-name-servers 172.17.1.254;
  option time-servers pool.ntp.org;
  option ntp-servers pool.ntp.org;
  option root-path "172.17.1.254:/opt/ltsp/i386";
  option nis-domain "nis.domain";
  option nis-servers 172.17.1.254;
  option lpr-servers 172.17.1.254;
  option log-servers 172.17.1.254;
  use-host-decl-names      on;
  filename "/grub/pxeloader";
  option option-150 "(nd)/grub/menu.lst"
}

In questo caso, si fa riferimento a un avvio secondo il metodo PXE; eventualmente volendo usare il metodo originale di Etherboot, basta modificare le ultime righe nel modo seguente:

...
  filename "/grub/nbloader";
  option option-150 "(nd)/grub/menu.lst"
...

308.3   Avvio indipendente

GRUB, utilizzato da dischetto, può avviare un terminale senza bisogno di Etherboot o di PXE, con il vantaggio di poter realizzare un dischetto uguale per terminali aventi interfacce di rete differenti.

Dopo aver compilato GRUB con la gestione di tutte le interfacce di rete di proprio interesse, servono i file stage1, stage2 e menu.lst, da collocare nella directory /grub/ di un dischetto (di solito un dischetto con un file system Dos-FAT).

Seguendo gli esempi noti di LTSP, il file menu.lst potrebbe essere realizzato nel modo seguente. Rispetto a quanto mostrato a proposito dell'avvio di GRUB tramite la rete, si può osservare l'istruzione bootp, con la quale si richiede di interrogare il protocollo DHCP per ottenere gli indirizzi IPv4 necessari al collegamento:

default 0
title LTSP
kernel (nd)/lts/2.6.9-ltsp-3/bzImage-2.6.9-ltsp-3 root=/dev/ram0 rw init=/linuxrc
initrd (nd)/lts/2.6.9-ltsp-3/initrd-2.6.9-ltsp-3.gz

Successivamente occorre avviare l'eseguibile grub per sistemare l'avvio nel dischetto:

grub[Invio]

grub> root (fd0)[Invio]

grub> setup (fd0)[Invio]

grub> quit[Invio]

308.4   Riferimenti

Appunti di informatica libera 2007.02 --- Copyright © 2000-2007 Daniele Giacomini -- <daniele (ad) swlibero·org>


Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome avvio_di_terminali_ltsp_con_grub.htm

[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico]

Valid ISO-HTML!

CSS validator!