1 760
contributi
mNessun oggetto della modifica |
mNessun oggetto della modifica |
||
Riga 1: | Riga 1: | ||
== Presentazione == | |||
Questo script bash confronta due file di configurazione del kernel e stampa | |||
le voci che contengono una determinata stringa che siano settate (o non settate) nel primo e settate (o non settate) nel secondo. | |||
< | Pu� essere utile per individuare quali voci mancano in un kernel ricompilato ripetto ad un kernel binario debian, in una particolare sezione del kernel. | ||
</ | == Sintassi == | ||
Lo script va lanciato nel seguente modo (supponendo di averlo chiamato <tt>ker-conf</tt>): | |||
ker-conf config-1 config-2 stringa [s|n] [s|n] | |||
I primi due parametri sono i due file di configurazione del kernel da confrontare. Il terzo parametro � la stringa che deve essere contenuta nelle voci di configurazione di entrambi i kernel (solo questo sotto-insieme viene confrontato). La stringa di ricerca � ''case-insensitive'', valori di esempio sono: scsi, usb, | |||
acpi, '*', ecc... | |||
Gli ultimi due parametri (opzionali) possono essere solo 's' o 'n' (settato o non | |||
settato) e si riferiscono rispettivamente allo stato di config-1 e config-2. | |||
Se gli ultimi due parametri vengono omessi viene usato il default: n s. | |||
'' | Quando l'ultimo parametro � s (e' il default se non specificato) le voci | ||
sono stampate con lo stato (<tt>=y</tt> oppure <tt>=m</tt>) del secondo config. | |||
Per una breve decrizione del funzionamento dello script, basta lanciarlo senza alcun parametro. | |||
== Script == | |||
<pre> | <pre> | ||
# | #!/bin/bash | ||
</ | # | ||
# ckc - Confronta Kernel Config | |||
# Versione: 0.0.3 | |||
# | |||
# Copyright (C) 2005 - Davide Natalini <tindal@katamail.com> | |||
# Antonio Ingargiola <debian@fastwebnet.it> | |||
# | |||
# Released under the GNU GENERAL PUBLIC LICENSE. | |||
# | |||
usage() { | |||
echo -e "\n *** Errore: Parametri non corretti.\n" | |||
echo -e " USO: \n" | |||
echo -e " ${0##*/} config-1 config-2 stringa [s|n] [s|n]\n" | |||
echo -e " Lo script ${0##*/} confronta due file di configurazione del kernel e stampa" | |||
echo -e " le voci che contengono 'stringa' che siano settate (o non settate) nel primo" | |||
echo -e " e settate (o non settate) nel secondo.\n" | |||
echo -e " Gli ultimi due parametri possono essere solo 's' o 'n' (settato o non" | |||
echo -e " settato) e si riferiscono rispettivamente allo stato di config-1 e config-2." | |||
echo -e " Se gli ultimi due parametri vengono omessi viene usato il default: n s. \n" | |||
echo -e " Quando l'ultimo parametro e' s (e' il default se non specificato) le voci" | |||
echo -e " sono stampate con lo stato (built-in o modulo) del secondo config.\n" | |||
exit 1 | |||
} | |||
filter () { | |||
FILE=$1; STATUS=$2 | |||
BOOL=''; EXP='^ *$'; [ "$STATUS" = "s" ] && BOOL="-v" || EXP='=|is not set' | |||
SED_EXP='s/\(# \)\?\([0-9a-zA-Z_]\+\)\(=.\)\?.*/\2\3/' | |||
egrep $BOOL '^#' "$FILE" | egrep $BOOL "$EXP" | egrep -i "$PAR" | sed "$SED_EXP" | |||
} | |||
[ $# -lt 3 ] || [ $# -gt 5 ] && usage | |||
NEW_CONFIG=$1; REF_CONFIG=$2; PAR=$3 | |||
STATUS_NEW=${4-n}; STATUS_REF=${5-s} | |||
for S in $STATUS_NEW $STATUS_REF; do [ "$S" = "s" ] || [ "$S" = "n" ] || usage; done | |||
TMP_FILE_NEW="/tmp/${0##*/}-new.tmp" | |||
TMP_FILE_REF="/tmp/${0##*/}-ref.tmp" | |||
ON_EXIT="rm -f $TMP_FILE_NEW $TMP_FILE_REF" | |||
trap "$ON_EXIT" 0 15 | |||
filter $REF_CONFIG $STATUS_REF > $TMP_FILE_REF | |||
filter $NEW_CONFIG $STATUS_NEW > $TMP_FILE_NEW | |||
for LINE_NEW in $( cat $TMP_FILE_NEW ) | |||
do | |||
egrep "${LINE_NEW/%=[ymn]/}(=[ymn])?$" $TMP_FILE_REF | |||
done | |||
exit 0 | |||
</pre> | |||
[[Categoria:Kernel]] | |||
[[Categoria: | [[Categoria:Script]] |
contributi