[Linux-Biella] find, exec e script
Paolo Ciarrocchi
paolo.ciarrocchi a gmail.com
Ven 21 Apr 2006 22:43:46 CEST
On 4/21/06, Andrea Ferraris <andrea.ferraris a gmail.com> wrote:
> Paolo Ciarrocchi ha scritto:
>
> >>>> La parte appassionante sarebbe quella che ti modifica grub.conf o
> >>>> menu.lst in automatico. Anzi, partendo dal parsing del file di
> >>>> configurazione del boot loader potresti gia` sapere dov'e` il kernel e
> >>>> quindi agire di conseguenza. Il problema, oltre a capire automaticamente
> >>>> qual e` il boot loader impiegato dal sistema, sempre in gentoo, e` che
> >>>> normalmente grub.conf o menu.lst e` in /boot/grub e quindi non e`
> >>>> montato nemmeno lui, mentre quello in /etc e` un simlink a quello.
> >>> Ci ho ovviamente pensato ma credo sia fuori dalla mia portata.
> >> Ma, non credo. Sia lilo che grub hanno delle parole chiave nei file di
> >> configurazione che ti permettono di identificare il nome del kernel e il
> >> suo percorso (sara` vero? credo di si`, ma non vorrei finire come Muzio
> >> Scevola).
>
> Sono decisamente convinto che sia abbastanza semplice, soprattutto
> usando uno strumento come awk, p.es. tipo (per grub):
>
> # contatore
> n=0
>
> # array kfp (kernel full path), i cui elementi sono separati da ":"
> kfp=""
>
> # array kn (kernel name), i cui elementi sono separati da ":"
> kn=""
>
> for i in `awk '{if($1=="kernel") print $2}' grub.conf`
> do
> if [ "$n" -gt "0" ]
> then
> kfp="$kfp":"$i"
> kn="kn":`basename "$i"`
> else
> kfp="$i"
> kn=`basename "$i"`
> fi
> n=$(($n+1))
> done
>
> A questo punto (non e` che abbia testato molto, per cui potrebbe non
> essere cosi`) avrai in $kfp tutti i full path dei vari kernel installati
> in grub.conf (separati da ":"; quindi e` decisamente facile farne il
> parsing) e in $kn tutti i nomi dei vari kernel installati in grub.conf e
> in $n il loro numero. Probabilmente fa abbastanza schifo, nel senso che
> puo` darsi che bash gestisca nativamente i vettori, ma non mi ricordo
> ne' se, ne' se si` come e non ho voglia di andarmelo a rivedere adesso.
> Molto probabilmente si puo` fare meglio, questa e` solo un'idea.
Grazie.
Purtroppo non sono convinto. Io ho vmlinuz e vmlinuz.old che sono due
link simbolici all'ultimo e penultimo kernel installati. La creazione
dei due link viene fatta automanticamente con make install.
Il mio script ora mi mostra i link, i veri binari e con un clic
elimino quello che ora non è piu' linkato ne da vmlinuz ne da
vmlinuz.old.
Vedi il problema? Facendo il solo parsing di menu.lst non vedo tutti i
kernel installati ma solo quelli configurati con grub.
La soluzione ideale probabilmente è un "misto" della mia realizzazione
e della tua proposta.
> >> Per vedere quale boot loader e` installato credo che entrambi abbiano
> >> delle modalita` di query o listing della configurazione e da
> >> quell'output o dalla sua assenza dovresti poter capire quale e` usato.
> >> Poi comunque se qualcuno usasse isolinux o syslinux o magari
> >> qualcos'altro ... La questione diventa complessa e lo script uno
> >> scriptone e quindi si ritorna al punto: chi te lo fa fare? Se ti
> >> diverti, come credo, fai bene, ma come esercizio.
> >>
> >
> > E' assolutamente un esercizio, utile per impare un po' di scripting e di zenity.
> > Sulla mia macchina funziona, percio' perche' non condiverlo?
>
> Certo, fai bene, ci possiamo divertire un po' tutti ed e` certamente
> interessante anche quanto sotto.
Spero di non "annoiarvi" postando cosi tanto codice per questo
progetto del tutto amatoriale.
Ciao,
--
Paolo
http://paolociarrocchi.googlepages.com
Maggiori informazioni sulla lista
Linux