Wiki Ubuntu-it

Indice
Partecipa
FAQ
Wiki Blog
------------------
Ubuntu-it.org
Forum
Chiedi
Chat
Cerca
Planet
  • Pagina non alterabile
  • Informazioni
  • Allegati
  • Differenze per "Cestino/Burg"
Differenze tra le versioni 55 e 56
Versione 55 del 28/03/2011 09.12.31
Dimensione: 29737
Commento:
Versione 56 del 14/06/2011 18.04.13
Dimensione: 29898
Commento:
Le cancellazioni sono segnalate in questo modo. Le aggiunte sono segnalate in questo modo.
Linea 17: Linea 17:
 * Se si utilizza Ubuntu 11.04 aggiungere ai propri [[Repository|repository]] il seguente PPA:
{{{http://ppa.launchpad.net/n-muench/burg/ubuntu/ natty main}}}

Problemi in questa pagina? Segnalali in questa discussione

Introduzione

Burg è un bootloader derivato da Grub che aggiunge alcune funzioni tra le quali una facile gestione dei temi.

In questa guida verrà spiegato come installarlo e come configurarlo.

Installazione

  • Aggiungere ai propri repository l'apposito PPA (Personal Package Archives) digitando in una finestra di terminale il seguente comando:

    sudo apt-add-repository ppa:bean123ch/burg && sudo apt-get update
  • Se si utilizza Ubuntu 11.04 aggiungere ai propri repository il seguente PPA:

http://ppa.launchpad.net/n-muench/burg/ubuntu/ natty main

Infine, per utilizzare Burg come bootloader predefinito:

  • digitare il seguente comando in una finestra di terminale:

    sudo burg-install "(hd0)"
  • aggiornare le voci di Burg con il seguente comando:

    sudo update-burg

Nuovi menù di sistema

Utilizzo

Per abilitare il menù di sistema è necessario installare un tema. Ciò è possibile semplicemente installando i seguenti pacchetti: burg-themes, burg-themes-common.

In alternativa è possibile utilizzare uno dei temi presenti al seguente indirizzo. In questo caso sarà necessario posizionarsi all'interno della cartella /boot/burg e scompattare il tema appena scaricato digitando i seguenti comandi in una finestra di temrinale:

cd /boot/burg
sudo tar xzf ~/nome_tema.tar.gz

sostituendo nome_tema con il nome dell'archivio appena scaricato.

Una volta installato il pacchetto contenente i temi, applicare un nuovo tema sarà semplicissimo. Basterà infatti premere il tasto t alla schermata di Burg e scegliere il tema che si preferisce dalla lista dei temi disponibili.

Possibili opzioni richiamabili durante la schermata di Burg sono:

Opzione

Descrizione

e

Modifica la voce presente in /boot/burg/burg.cfg riguardante il sistema operativo selezionato.

t

Modifica il tema.

c

Apre una finestra di terminale.

2

Apre due finestre di terminale.

F5

Equivalente a Ctrl+X, usato salvare le modifiche.

F6

Sposta la selezione all'elemento successivo.

F8

Cambia il bootloader da modalità grafica a modalità testuale

F9

Arresta il sistema.

F10

Arresta il sistema.

F9

Riavvia il sistema.

ESC

Ritorna alla finestra principale di Burg.

Struttura basa

Il formato dei file dei temi è molto semplice, {} è usato per determinare un blocco di istruzioni, e = è usato per settare una proprietà, ad esempio:

screen {
  panel {
    extend = 1
    valign = center
    halign = center

    panel {
      class = frame
      id = __menu__
    }
  }
  
  panel {
    id = __timeout__
    attach_bottom = 1
    width = 60%
    halign = center
    height = 1
    progressbar {
     width = 100%
     height = 100%
     color = "red:brown"
    }
  }
}

mapkey {
  f5 = ctrl-x
}

Gli elementi più importanti il un file del tema si definiscono in sezioni, ogni sezione ha delle funzioni specifiche. Per esempio, la sezione screen è usata per definire il layout dello schermo, mentre la sezione mapkey definisce la mappatura della tastiera.

Ci sono due comandi per leggere i file dei temi, load_config e merge_config:

load_config /boot/burg/default.txt

La differenza tra load_config e merge_config è che se una sezione esiste già, merge_config utilizza le nuove sezioni più le esistenti, mentre load_config le sovrascrive.

Rappresentazione dei dati

Il file del tema dovrebbe funzionare sia in modalità testuale chee grafica, quindi non può essere più componenti pacchettizzate all'interno di una singola proprietà.

Dimensione

Tutte le proprietà che specificano le dimensioni utilizzano la seguente rappresentazione:

10

10 è la dimensione del carattere in modalità grafice e testuale. In modalità grafica, la dimensione è calcolata usando il font predefinito del sistema, che è impostato usando la variabile gfxfont. Notare che width=1 e height=1 non è la stessa dimensione in pixel.

10%

La dimensione è del 10% del widget genitore, in entrambe le modalità grafica e testuale.

10/1

10 pixel in modalità grafica, e un carattere in modalità testuale. Ciascuna componente può usare una nozione di percentuale come:

10%/20%

10% in modalità grafica, 20% in modalità testuale.

Colore

red

Rosso, in entrambe le modalità grafica e testuale.

Il nome del colore riconosciuto è il seguente:

  • black, blue, green, cyan, red, magenta, brown, light-gray - può essere usato come colore di primo piano o di sfondo in modalità testuale.
  • dark-gray, light-blue, light-green, light-cyan, light-red, light-magenta, yellow, white - può essere usato solo come colore di primo piano in modalità testuale.

red/blue

Il colore di primo piano è il rosso, quello di sfondo è il blu, funzionano sia in modalità grafica che testuale.

#808080/red/blue

Usare #808080 in modalità grafica, colore rosso in primo piano, colore blu di sfondo in modalità testuale.

I widget diventano selezionabili se vi è associato un comando.In questo caso, si consiglia di utilizzare il colore diverso quando il widget è stato selezionato, questo può essere ottenuto unendo due colori insieme con ":":

cyan/blue:light-gray/blue

Quando il widget è selezionato, il colore in primo piano è light-gray (grigio chiaro), altrimenti è cyan (ciano). Il colore di sfondo è blu in entrambe le situazioni.

Immagine

,,blue,#0

Disegna una casella rettangolare blu, in entrambe le modalità grafica e testuale.

,,blue,c

Disegna una casella rettangolare blu, usando il carattere di riempimento 'c', in entrambe le modalità grafica e testuale.

,,blue,#0x250F

Disegna una casella rettangolare blu, usando il glifo unicode 0x250f come carattere di riempimento, in in entrambe le modalità grafica e testuale.

/splash.png,,blue,#0

Disegna l'immagine /splash.png in modalità grafica,una casella rettangolare blu in modalità testuale, è possibile specificare anche un carattere di riempimento.

/splash.png,,blue

Disegna l'immagine /splash.png in modalità grafica, nulla in modalità testuale.

/splash.png

Idem come sopra, ma usa il metodo di scalatura predefinito e il colore di sfondo.

none,,blue,#0

Disegna una casella rettangolare blu in modalità testuale, nula in modalità grafica.

Negli esempi visti sopra, i secondo parametro è sempre vuoto, eso specifica il metodo di scalatura dell'immagine, e può usare un unico dei seguenti valori:

  • scaling (predefinito) - scala l'immagine in base alla larghezza / altezza del widget.
  • center - disegna l'immagine al centro
  • tiling - ripete l'immagine fino a riempire l'area.
  • minfit - mantiene il rapporto di scala, assicura l'intera immagine venga visualizzata, ma può lasciare bianco in alto / basso o destra / sinistra.
  • maxfit - mantiene il rapporto di scala, si garantisce l'assenza di bianco, ma l'immagine può essere troncata in alto / basso o destra / sinistra.

Per metodi di disegno che non lasci spazi, utilizza il colore in terzo parametro come sfondo.

Proprio come il colore, è possibile unire due immagini insieme usando ":" per specificare un'immagine diversa quando il widget è selezionata.

,,cyan/blue,#0x250F:,,light-gray/blue,#0x2554

Proprietà comuni

Alcune proprietà sono condivise da tutti i widget. Questo include le proprietà utilizzate dal gestore layout, comando, anchor e classi.

Gestore di layout

È possibile inserire un widget in uno dei due modi. È possibile impostare la sua posizione direttamente, oppure si può lasciare che il gestore di layout lo faccia automaticamente.

Per il posizionamento assoluto, è possibile utilizzare le seguenti proprietà:

  • attach_top - distanza dal bordo superiore del genitore
  • attach_bottom - distanza dal bordo inferiore del genitore
  • attach_left - distanza dal bordo sinistro del genitore
  • attach_right - distanza dal bordo destro del genitore
  • attach_hcenter - offset dalla linea centrale orizzontale
  • attach_vcenter - offset dalla linea centrale verticale

Se nessuna delle proprietà sopra è impostata, il gestore del layout dovrebbe provare a calcolare la posizione del widget automaticamente. E' possibile controllare la posizione usando queste proprietà:

  • extend - se impostato a 1, estende il widget nella direzione del genitore.
  • valign - può essere sopra, al centro, sotto o esteso (predefinito).
  • halign - può essere sinistra, al centro, destra o esteso (predefinito).

Il widget genitore usa le seguenti proprietà per controllare la posizione del figlio:

  • direction - La direzione, il suo valore può essere top_to_bottom (default), bottom_to_top, left_to_right or right_to_left.
  • space - Lo spazio lasciato tra due figli.

E' possibile anche impostare la dimensione del widget con queste proprietà:

  • width - larghezza del widget
  • height - altezza del widget

Se una sola delle proprietà di sopra non è impostata, il gestore del layout manager dovrebbe provare a calcolare la larghezza/altezza automaticamente, che normalmente è la dimensione minima per contenere suo figlio, altrimenti può essera anche esteso usando la proprietà extend menzionata sopra.

A volte si desidera che il gestore del layout calcoli automaticamente la dimensione,ma che il widget non sia troppo largo o troppo stretto. In questo caso, è possibile usare le seguenti proprietà per limitare la dimensione dei widget calcolata automaticamente:

  • min_width - larghezza minima del widget
  • max_width - larghezza massima del widget
  • min_height - altezza minima del widget
  • max_height - altezza massima del widget

Notare che queste proprietà non hanno effetto se al dimensione è esplicitamente impostata usando le proprietà width/height.

Command

La proprietà command associa un'azione al widget corrente. Una volta che è impostata, il widget diventa selezionabile, tasti di navigazione su / giù / sinistra / destra salta al widget successivo con insieme di proprietà di command, ed il tasto Invio esegue il comando.

Per specificare più comandi da avviare in questa proprietà, usare '\n' come separatore. Per esempio:

command = "chainloader +1\nboot"

Anchor

A volte è necessario raggruppare insieme alcuni widget. Per esempio quando si naviga dentro un menù, può essere utile per tornare all'ultima voce quando si utilizza il tasto precedente sulla prima voce. Ciò può essere ottenuto settando gli anchor ad 1 nel widget genitore. Un tasto come Tab salta al successivo widget selezionabile in un altro anchor, quindi può essere utilizzato per passare tra i diversi menù.

Class

Molti widget condividono lo stesso valore di proprietà. Per esempio, si ha la necessità di disegnare un box rettangolare in molte occasioni, così come in menù, sottomenù, finestra di terminale, etc. Invece di duplicare lo stesso insieme di proprietà molte volte, è possibile dare un nome utilizzando la proprietà di class, la proprietà reale è impostata nella sezione class.

Se la proprietà di class non è impostata, cercherebbe di individuare le proprietà predefinite utilizzando il nome widget.

screen {
 panel { class = frame }
 panel { class = frame }
}

class {
 frame {
  top_left = ",,cyan/blue,#0x250F:,,light-gray/blue,#0x2554"
  top = ",tiling,cyan/blue,#0x2501:,,light-gray/blue,#0x2550"
  top_right = ",,cyan/blue,#0x2513:,,light-gray/blue,#0x2557"
  left = ",tiling,cyan/blue,#0x2503:,,light-gray/blue,#0x2551"
  right = ",tiling,cyan/blue,#0x2503:,,light-gray/blue,#0x2551"
  bottom_left = ",,cyan/blue,#0x2517:,,light-gray/blue,#0x255A"
  bottom = ",tiling,cyan/blue,#0x2501:,,light-gray/blue,#0x2550"
  bottom_right = ",tiling,cyan/blue,#0x251B:,,light-gray/blue,#0x255D"
 }

 screen {
  background = ":,,blue,#0"
 }
}

Widgets

I widget sono gli elementi basa che costituiscono un interfaccia utente. Ci sono vari widget, ognuno personalizzabile tramite dei settaggi.

panel

Panel è un contenitore di altri widget. La sua posizione può essere settata. Ci sono quattro settaggi diversi per la posizione del pannello, dall'esterno all'interno:

  • padding_size, padding_top, padding_bottom, padding_left, padding_right - This is the most outward layer of empty strip for panel, padding_size set the default value for all four borders, you can overwrite specific size with property like padding_top.
  • border_color, border_size, border_top, border_bottom, border_left, border_right - The second layer, consists of solid color.
  • top_left, top, top_right, left, right, bottom_left, bottom, bottom_right - The third layer, consist of 8 images.
  • margin_size, margin_top, margin_bottom, margin_left, margin_right - The most inward layer, an empty strip to prevent children widgets from getting too closed to borders,
  • background - L'immagine di sfondo

screen

Screen è il widget più importante. È come un pannello, ma non ha bordi esterni quindi ha solo le proprietà relative al bordo e allo sfondo.

text

Text è un widget che mostra una singola linea di testo. Text ha le seguenti proprietà:

  • text - La stringa da mostrare
  • gfx_text - La stringa da mostrare in modalità grafica, se non è settato, sia la modalità testuale che grafica sono uguali.
  • color - Colore del testo
  • font - Carattere del testo

image

Image è il widget che ti consente di mostrare un immagine. Proprietà:

  • image - l'immagine da mostrare

edit

Edit è un widget per mostrare una finestra di edit. Proprietà:

  • max_lines - Il numero massimo di linee da immagazzinare. max_lines=1 intende l'edit di linea singola. max_lines=0 intende linee illimitate. Se non impostato, 100 è usato come valore predefinito.
  • lines - Il numero di linee da mostrare sullo schermo. Questo è usato per calcolare l'altezza del widget, così non lo combina con l'edit di linea singola della proprietà di altezza.
  • columns - Il numero di colonne da mostrare sullo schermo. Questo è usato per calcolare la larghezza del widget, così non lo combina con la proprietà di altezza.
  • text - Il testo iniziale. È possibile impostare più linee usando il separatore \n .
  • color - Colore del testo.
  • font - Font del testo.

Nel widget di edit, usare Ctrl-x per salvare l' edit corrente e Invio, ESC per annullare.

term

Term non è altro che un emulatore di terminale, ha le stesse proprietà degli altri widget.

password

Password è un widget composto da una sola riga di immissione testo, ma diversamente dalle normali righe, mostra il carattere * invece dei reali caratteri inseriti. Usa le proprietà columns, color e font.

progressbar

Questo è usato per mostrare una barra di progresso prima che il timeout sia raggiunto. Proprietà:

  • color - Il colore della progressbar. Il primo componente è il colore della barra in avanzamento, il secondo è usato per la restante parte della progressbar. Se il secondo componente viene omesso, sarà visibile la barra in un solo colore.

Template

Template è usato per definire un componente composito. Per esempio:

dialog_hello {
  panel {
    parameters = "text=text.text"
    class = frame
    text {}
  }
}

I parametri di proprietà definiscono il mapping tra i parametri e proprietà interne. Questo modello accetta un solo parametro di testo, che è mappato alla proprietà text del widget di testo.

Alcuni template sono utilizzati internamente per cui devono essere definiti nel file di tema:

  • dialog_message - mostra una finestra di dialogo con messaggio di testo unico. Deve accettare parametro text che è il contenuto del testo..
  • dialog_password - mostra una finestra di dialogo di immissione della password. Must accepts username and password parameter which mapping to the username and password input text.
  • template_submenu - Template usato per generare i sottomenù.
  • template_menuite - Template usato per generare le voci del menù di avvio. Deve accettare i parametri title e class.

Qui vi sono le definizioni di questi templates nel file di tema predefinito:

dialog_message {
  panel {
    parameters = "text=text.text"
    class = frame
    margin_size = 1
    margin_bottom = 0
    space = 1
    attach_hcenter = 0
    attach_vcenter = 0
    text {}
    panel {
      class = frame
      command = true
      halign = center
      margin_left = 1
      margin_right = 1
      text { text = OK }
    }
  }
}

dialog_password {
  panel {
    parameters = "username=__user__.text:password=__pass__.text"
    class = frame
    margin_size = 1
    margin_bottom = 0
    attach_hcenter = 0
    attach_vcenter = 0

    panel {
      direction = left_to_right
      space = 1
      text {
        extend = 1
        valign = center
        text = Username
      }
      panel {
        class = frame
        margin_left = 1
        margin_right = 1
        edit {
          id = __user__
          max_lines = 1
        }
      }
    }

    panel {
      direction = left_to_right
      space = 1
      text {
        extend = 1
        valign = center
        text = Password
      }the text 
      panel {
        class = frame
        margin_left = 1
        margin_right = 1
        password {
          id = __pass__
        }
      }
    }

    panel {
      class = frame
      command = true
      halign = center
      margin_left = 1
      margin_right = 1
      text {
        text = OK
      }the text 
    }
  }
}

template_submenu {
  panel {
    class = frame
  }
}

template_menuitem {
  panel {
    parameters = "class=image.class:title=text.text"
    class = select
    direction = left_to_right
    image {}
    text { valign = center }
  }
}

Questo tema fa apparire il sottomenù a fianco del genitore, se si preferisce mostrare il sottomenù a schermo intero, è possibile rimpiazzare template_submenu con questo:

template_submenu {
  panel {
    width = 100%
    height = 100%

    panel {
      id = __child__
      class = frame
      valign = center
      halign = center
      extend = 1
    }
  }
}

il testo qui, il widget con id child è il posto per inserire oggetti si sottomenù autogenerati (usando template_menuitem).

È possibile controllare il posizionamento dei sottomenu mostrato utilizzando la proprietà popup, ad esempio:

screen {
  panel {
   id = __menu__
   popup = left
  }
}

template_submenu {
 panel {
  class = frame
  popup = right
 }
}

I valori possono essere:

  • left, right, top, bottom - la posizione del sottomenu mostrato relativo al widget corrente selezionato.
  • abs - Posizione assoluta, il sottomenù si avvia in (0, 0).

Il popup non è impostato, il sistema di menu cerca di decidere la posizione di popup automaticamente,

Con template, la section screen è veramente semplice:

screen {
  panel {
    extend = 1
    valign = center
    halign = center

    panel {
      class = frame
      id = __menu__
    }
  }

  panel {
    id = __timeout__
    attach_bottom = 1
    width = 60%
    halign = center
    height = 1
    progressbar {
      width = 100%
      height = 100%
      color = "red:brown"
    }
  }
}

Il widget con id menu è il posto per inserire oggetti di menù superiore autogenerati definito con la dichiarazione menuentry in grub.cfg. Il widget con id timeout è usato per il controllo del timeout. Quando l'avvio automatico è messo in pausa da un tasto premuto, il widget con id timeout e tutti i suoi figli dovrebbero stare nascosti.

È inoltre possibile utilizzare il comando menu_popup per creare una finestra di dialogo basata su template. templates. Ad esempio, per creare una finestra con messaggio ciao mondo, possiamo utilizzare il template dialog_message:

menu_popup dialog_message "text=Ciao, Mondo"

Il comando menu_edit è molto simile a menu_popup, ma si avvale di due parametrizzazioni di direzione, è usato per implementare la finestra di modifica del comando. In primo luogo, si definisce il template nel file di tema:

dialog_edit {
  panel {
    parameters = "text=edit.text"
    class = frame
    width = 80%
    attach_hcenter = 0
    attach_vcenter = 0

    edit {
      lines = 10
    }
  }
}

Utilizzare poi questo comando per avviare la finestra di dialogo:

menu_edit dialog_edit text=command

In ingresso, il parametro text della finestra di dialogo è impostato al parametro command del widget corrente. Dopo aver fatto la modifica, invertire l'ordine e aggiornare il parametro command al nuovo testo.

Interazione dell'utente

Con il nuovo aggiornamento del pacchetto del ppa (2010.06.07) c'è un nuovo comando chiamato menu_read. è usato per inserire una proprietà da finestra di dialogo ed assegnarla ad una variabile. Questo modello per l'interazione dell'utente, per esempio, aggiungere questo modello di dialogo al file di tema.

dialog_input {
  panel {
    parameters = "old_value=__old__.text:new_value=__new__.text"
    class = frame
    margin_size = 1
    margin_bottom = 0
    attach_hcenter = 0
    attach_vcenter = 0

    panel {
      direction = left_to_right
      space = 1
      text {
        extend = 1
        valign = center
        text = "Old value"
      }
      text {
        id = __old__       
      }
    }

    panel {
      direction = left_to_right
      space = 1
      text {
        extend = 1
        valign = center
        text = "New value"
      }
      panel {
        class = frame
        margin_left = 1
        margin_right = 1
        edit {
          id = __new__
          max_lines = 1
        }
      }
    }

    panel {
      class = frame
      command = "menu_read new_value AA"
      halign = center
      margin_left = 1
      margin_right = 1
      text {
        text = OK       
      }
    }
  }
}

Il modello di sopra può essere visualizzato usando:

menu_popup dialog_input old_value=${AA}

Il campo "Old value" mostra il valore della variabile AA, e il valore dell' edit box "New value" sarà assegnato a AA quando si fa clic su "OK".

Scorciatoie da tastiera

E' possibile utilizzare la sezione keymap per mappare qualche tasto per un altro. Questo è utile in piattaforme come EFI dove tasti come ctrl non possono essere di input.

la sezione onkey associa i comandi di Grub per i stasti. Se ub tasto è già gestito dal widget in corso, il comando definito nella sezione onkey section è ignorato. Per esempio, dentro una finestra di terminale, c è usato come carattere di input, così il comando definito in onkey è ignorato.

onkey {
  e = "*menu_edit dialog_edit text=command"
  t = "if menu_edit dialog_line text=title; then menu_refresh; fi"
  c = "*menu_popup term_window"
  2 = "*menu_popup two_term"
  f6 = ui_next_anchor
  f8 = menu_toggle_mode
  f9 = halt
  f10 = reboot
}

mapkey {
  f5 = ctrl-x
}

L'asterisco all'inizio del comando indica che questo comando è protetto da password, questo sarà spiegato al paragrafo successivo..

Password

Per abilitare la protezione con password, aggiungere il seguente comando all'inizio del file grub.cfg:

set superusers=admin
password --md5 admin '$1$A1tpOB3$bTHEMeIVvBbQsLZIWmJp/.'
password user1 user1

La variabile superusers imposta i super users. I comando password imposta la password for singolo utente. Con l'opzione --md5, la password deve esser la password, altrimenti è solo testo.

Per generare una passsword md5, usare il comando:

grub-mkpasswd admin

Il cui output è del tipo:

$1$A1tpOB3$bTHEMeIVvBbQsLZIWmJp/.

E' possibile usare anche il comando openssl per generarla:

openssl passwd -1 -salt 1234567 admin

Il cui output è del tipo:

$1$1234567$ergpnZu0mLdD77Dbmwjpb1

Per proteggere certe voci di avvio, aggiungere l'opzione --users nella dichiarazione del menuentry:

menuentry Item1 --users user1 {
  true
}

Solo user1 e i super utenti possono accedere a questa voce di avvio .

Nella definizione delle scorciatoie da tastiera, è possibile aggiungere * all'inizio del comando così che solo i super utenti possano accedervi.

Save default

Per abilitare save default, occorre generare un file di ambiente usando grub-editenv:

sudo grub-editenv /boot/grub/grubenv create

La posizione predefinita per i file di ambiente è grubenv nella cartella di grub, anche se è possibile sovrascriverla con variabile envfile. Il comando load_env legge il file di ambiente da disco.

Per abilitare save default per tutti gli oggetti, è possibile impostare savedefault=1 in grub.cfg, per saltare qualche oggetto, aggiungere nell'istruzione del menuentry l'opzione --nosave. Se si desidera solo salvare alcuni oggetti, è possibile saltare savedefault=1, ma aggiungere l'opzione --save nell'oggetto che si desidera salvare. Per esempio:

set envfile=/boot/grub/grubenv
set savedefault=1
load_env

menuentry Item1 --nosave {
  true
}

menuentry Item2 --save {
  true
}

E' possibile impostare l'oggetto predefinito usando il file config, per esemopio, per avviare il primo oggetto, aggiungere questa linea a /etc/default/grub:

GRUB_DEFAULT=0

Per avviare l'oggetto salvato dall'ultimo avvio:

GRUB_DEFAULT=saved

Non dimenticare di usare grub-mkconfig/update-grub per aggiornare il reale grub.cfg.

Timeout

E' possibile utilizzare la variabile timeout per abilitare l'avvio automatico se nessun tasto è premuto in N secondi:

set timeout=5

Se timeout è impostato a 0, si avvierà immediatamente, altrimenti è possibile fermarlo premendo un qualsiasi tasto all'avvio. In the case of timeout=0, the menu is not drawn unless auto boot process is halt.

Timeout può essere impostato nel file config usando la variable GRUB_TIMEOUT.

Icone del menu

Per aggiungere icone alle voci di boot, usare l'opzione --class:

menuentry Item1 --class image_ubuntu {
  true
}

Allora nel file di tema, definire la classe image_ubuntu:

class {
  image_ubuntu {
    image = "${prefix}/icons/ubuntu.png"
  }
}

È possibile aggiungere un menu predefinito seguendo le voci definite con menuentry. Il menu predefinito è definito nel file del tema usando la sezione menu:

menu {
  Tools {
    class = image_dir
    users = user
    save = 0

    "Toggle Mode" {
      class = image_tools
      command = menu_toggle_mode
    }

    "Terminal" {
      class = image_term
      command = "menu_popup term_window"
    }

    "Two Term" {
      class = image_term
      command = "menu_popup two_term"
    }

    "About" {
      class = image_about
      command = "menu_popup dialog_message \"text=This is GNU GRUB\""
    }
  }

  Shutdown {
    class = image_shutdown
    command = "halt"
  }

  Restart {
    class = image_restart
    command = "reboot"
  }
}

Qui, class corrisponde all'opzione --class nel menuentry, users corrisponde a --users, save=1/save=0 corrispondono a --save e --nosave.

Configurazione dinamica di PXE

Burg aggiunge un nuovo comando pxecfg, che può essere utilizzato per eseguire certi comandi in base agli attuali indirizzi IP / MAC.

Innanzitutto, scrivere un file config di pxe , il cui formato è molto simile al tema del menù.

ip {
  192 {
    168.2 {
      command = "echo ip 192.168.2.*"
    }

    169 {
      command = "echo ip 192.169.*.*"
    }

    command = "echo ip 192.*.*.*"
  }
}

mac {
  00-0c-29-1a {
    command = "echo mac 00-0c-29-1a-*-*"
  }

  command = "echo mac *-*-*-*-*-*"
}

Usare questo in grub.cfg per caricare il file config:

pxecfg /config.txt

Risoluzione problemi

Burg non troverà un grub.cfg.

Le versioni più recenti usano burg.cfg

Ulteriori risorse


CategoryHomepage