wiki:LlxBootManager

LliureX Net Boot Manager

Requeriments

Davant la necessitat de facilitar múltiples tipus d'arrencada per als clients d'un aula a través de la xarxa, cal incorporar un mecanisme per a la generació dinàmica del menú d'arrencada per a iPXE, la qual cosa passa per la generació d'un fitxer PHP que busque els diferents mecanismes d'arrencada que oferix el servidor.

En la versió LliureX 14.06, aquesta funcionalitat s'incorporava al lmd-server, però a partir de Lliurex 15.05 adquireix entitat pròpia com als paquets llx-bootmanager, amb la funcionalitat de generació del menú, i llx-bootmanager-gui, una eina gràfica per configurar el menú d'arrencada.

Ús de llx-bootmanager

El directori www-boot (pxemenu.d) contindrà diferents scripts, ordenats (a l'estil de runparts), que son incorporats dins el menu.php. L'estructura d'aquest directori tindrà un aspecte semblant al següent:

.
├── bootcfg.php
├── boot.php
├── menu.c32
├── menu.ipxe
├── menu.php
├── pxemenu.d
│   ├── 80-bootfromharddisk.php
│   └── 90-netinstall.php
└── vesamenu.c32

El fitxer menu.php que genera el menú, inclourà els fitxers ubicats en pxemenu.d, mitjançant el següent codi:

// Include all files in pxemenu.d menu

foreach (glob("pxemenu.d/*.php") as $filename)
{
    include $filename;
}

Com veiem, dins aquest directori hi ha dos fitxers php (80-bootfromharddisk.php i 90-netinstall.php) corresponents a l'arrencada des del disc dur i a la instal·lació per xarxa.

Com afegir noves entrades al menú?

Haurem de generar nous fitxers .php dins el directori pxemenu.d, amb el nom <prioritat>-<nom_del_script>.php, sent la prioritat un número entre 1 i 100. Els scripts s'escriuran en PHP i escriuran les entrades al menú amb echos. Com a exemple podem agafar qualsevol dels dos scripts que ja hi ha dins d'aquets directori, per exemple, el pxemenu.d/80-bootfromharddisk.php:

<?php
     
// Checking Boot from disk

echo "LABEL HD\n";
echo "MENU LABEL Arranca des del disc dur\n";
if ($default_boot=="boot-from-hd") echo "MENU default\n";
echo "KERNEL chain.c32\n";
echo "APPEND hd0 0\n";

?>

GUI

La GUI del llx-bootmanager-gui permet ajustar l'ordre de les entrades a l'administrador del sistema. Aquest ordre tindrà preferència a l'ordre establert per la prioritat. La configuració es guardarà en format json al fitxer /etc/llxbootmanager/bootcfg.json, amb un aspecte semblant al següent:

{
    "bootorder": [
        "ltsp_labelclient", 
        "bootfromhd"
    ], 
    "timeout": 50
}

Que conté al component timeout el temps d'espera per al menú i al bootorder l'ordre d'arrencada.

Mètodes n4d de la classe LlxBootManager

  • getBootOrder : anonymous: Obté la llista amb l'ordre d'arrencada
  • getBootTimer : anonymous: Obté el temps d'espera del menú
  • getBootList : anonymous: Obté la llista d'opcions per a l'arrencada
  • setBootOrder : adm admin: Estableix l'ordre d'arrencada
  • setBootTimer : adm admin: Estableix el temps d'espera
  • prependBootList : adm admin: Afig un item al principi de les opcions d'arrencada (a partir de la versió 0.3.1).
  • pushToBootList : adm admin: Afig un item al final de les opcions d'arrencada (a partir de la versió 0.3).

Notes a partir de la versió 0.3

A partir de la versió 0.3, es permet ocultar per part de l'administrador opcions d'arrencada al menú, encara que estiguen els scripts dins el directori pxemenu.d. La GUI no es modifica pràcticament:

http://trac.lliurex.net/trusty/attachment/wiki/LlxBootManager/LliureX%20Net%20Boot%20Manager_029.png

A la columna d'opcions de l'esquerra tindrem les opcions d'arrencada habilitades i ordenades, mentre que a la columna de la dreta tindrem aquelles opcions que, tot i estar instal·lades -tenen els scripts corresponents,- no es mostraran a l'usuari.

Nota important per a desenvolupadors: Donat que LlxBootManager no té manera de saber quan es crea una nova entrada possible per a l'arrencada, a partir de la versió 0.3 caldrà indicar al LlxBootManager explícitament que volem afegir una nova entrada al menú. Si no ho fem mitjançant codi, l'opció apareixerà a la GUI com a oculta, i caldrà afegir-la manualment a la llista d'opcions d'arranc.

Si una vegada hem creat una entrada al menú volem incorporar-la directament a l'arrencada, farem ús dels mètodes n4d pushToBootList, per afegir entrades directament al final del menú (per a cada imatge de LTSP que es genere, per exemple), o el mètode prependBootList, per afegir entrades al principi del menú (pensat per a quan habilitem la instal·lació per xarxa o el clonat d'imatges).

Des de la línia de comandaments, açò es faria:

 n4d-client -c LlxBootManager -m pushToBootList -u usuari -p password -a etiqueta_a_arrancar

 n4d-client -c LlxBootManager -m prependBootList -u usuari -p password -a etiqueta_a_arrancar

Si estem implementant-lo dins un mètode n4d, directament faríem:

objects['LlxBootManager'].pushToBootList("etiqueta_a_arrancar");

objects['LlxBootManager'].prependBootList("etiqueta_a_arrancar");

Last modified 2 years ago Last modified on Apr 14, 2015, 11:57:10 AM

Attachments (1)

Download all attachments as: .zip