|
|
Riga 1: |
Riga 1: |
| == Presentazione ==
| | curiosità: non si potrebbe mettere qualche cosa relativamente alla DebianWay? |
|
| |
|
| Questo script bash confronta due file di configurazione del kernel e stampa
| | [[Utente:MaXeR|MaXeR]] 11:27, Mar 31, 2006 (EST) |
| 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.
| | == Solo header o sources? == |
|
| |
|
| == Sintassi ==
| | Domanda da ignorante: non bastano gli header se si usa un kernel binario debian ? (almeno, su ubuntu è così)? |
| 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]
| | : [[Utente:TheNoise|~ The Noise]] 12:48, Mar 31, 2006 (EST) |
|
| |
|
| 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
| | Non mi ero accorto che c'era qualcosa nella discussione... :P |
| 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
| | beh, posso assicurare che gli header del kernel bastano e avanzano (infatti module-assistant scarica quelli), e per la debian way ci sto lavorando... beh, ormai manca poco, ma vorrei indagare sulle opzioni per il driver nvidia, perchè mi sembra che siano molte e abbastanza utili (io con NvAGP ottengo prestazioni su glxgears migliori di circa il 50%!) |
| 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.
| | :[[Utente:Tindal|Tindal]] 17:26, 8 Apr 2006 (EDT) |
| | |
| == Script ==
| |
| | |
| <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]]
| |