[ABANDONNÉ] Récupérer .config du kernel actuellement utilisé

Salut,

J’essaye de compiler un pilote Wifi (ath9k_htc) sur un kernel 2.6.36 (carte ARM) en utilisant le projet compat-wireless de kernel.org : wireless.kernel.org/en/users/Download/stable/

J’ai bien les en-têtes du kernel utilisé sur ma carte (récupérées sur le site du constructeur), mais pas le .config correspondant, c’est pourtant pas faute d’avoir cherché.
Problème : compat-wireless grogne sans ce .config (et le constructeur prend tout son temps pour me répondre :013), impossible de compiler quoi que ce soit. Je ne veux pas non plus reconfigurer+recompiler complètement le kernel, surtout pas sans le .config d’origine comme modèle.

J’ai vu qu’on pouvait récupérer la config du kernel actuellement chargé en mémoire via /proc/config.gz mais comme par hasard ce fichier n’existe pas non plus. :unamused:
Une autre idée ?

tu n’as pas de fichier config-* dans ton /boot?

Je te suis pas trop.
C’est quoi, un kernel que tu as compilé?
Dans ce cas tu as le .config dans les sources.

Ca faut que tu l’active dans ton kenel
General setup -> Kernel .config support + Enable access to .config through /proc/config.gz

Je n’ai même pas de /boot, comme ça c’est réglé. :wink:
Mais bon j’ai vraiment cherché partout (y compris find -name ‘config), rien à l’horizon sur les différentes partitions.

C’est pour ça que je pensais (espérais) pouvoir récupérer ça directement à partir du kernel compilé.

[quote=“sebB”]Je te suis pas trop.
C’est quoi, un kernel que tu as compilé?[/quote]
Non, c’est le kernel livré pré-compilé avec la carte par le constructeur (basé sur le kernel Debian mais avec des patches spécifiques pour cette carte).
Du coup je suis pieds et poings liés, sans le .config d’origine pour me servir de modèle je n’ai aucune idée des bonnes options de configuration donc je ne peux même pas recompiler le kernel ou en changer pour une version plus récente.

Est-ce que make localmodconfig aide à tout hasard?

Sont pas con les constructeurs.
C’est quoi? Un deb, un tar, on peut le télécharger quelque part?

Si c’est un deb, y’a pas moyen sous debian d’extraire ce deb? Tu devrais y trouver ton bonheur.

Pas de dossier boot ou un dossier boot vide?
Dans le 2nd cas monte ta partoche

Bien pensé, j’ai eu un espoir mais non :

$ make localmodconfig No config file found at scripts/kconfig/streamline_config.pl line 108. make[1]: *** [localmodconfig] Error 2 make: *** [localmodconfig] Error 2

[quote=“sebB”]Sont pas con les constructeurs.
C’est quoi? Un deb, un tar, on peut le télécharger quelque part?[/quote]
En fait c’est pire que ça : c’est sur une carte SD livrée avec l’appareil. J’en ai bien des copies, mais uploader presque 1 Go avec ma connexion (75ko/s :open_mouth:) c’est difficilement envisageable. :angry-banghead:
Pour arranger les choses le processus de boot est assez tarabiscoté : c’est un bootloader “maison” qui charge busybox, et qui ensuite seulement fait un switch-root sur Debian (qui en elle-même n’a aucun paquet kernel d’installé, elle utilise celui déjà chargé avant le switch-root). Bref y’a rien qui est à sa place normale en ce qui concerne le boot. :confused:

On peut avoir le lien vers le site du constructeur ou tu a récupéré les en-tetes

Si ton kernel est compilé avec CONFIG_IKCONFIG, tu peux utiliser le script extract-ikconfig (dans le dossier scripts des sources d’un kernel)

# head /usr/src/linux/scripts/extract-ikconfig 
#!/bin/sh
# ----------------------------------------------------------------------
# extract-ikconfig - Extract the .config file from a kernel image
#
# This will only work when the kernel was compiled with CONFIG_IKCONFIG.
#
# The obscure use of the "tr" filter is to work around older versions of
# "grep" that report the byte offset of the line instead of the pattern.
#
# (c) 2009,2010 Dick Streefland <dick@streefland.net>

Problème contourné : j’ai fini par récupérer un 2.6.36 complet sur les snapshots et par copier à la main les modules qu’il me fallait (en fait ath9k_htc est dispo depuis le 2.6.35, il était simplement pas livré avec mon kernel). :open_mouth: :eusa-whistle:
Je sais, c’est sale, mais au moins ça marche… :blush:
Plus qu’à attaquer hostapd maintenant… enfin demain quoi… tout à l’heure en fait… :unamused:

PS: merci kna, je ne connaissais pas IKCONFIG. Mais évidemment mon kernel n’a pas été compilé avec cette option, ça serait pas drôle autrement. :013

Merci à tous. :006

[quote=“syam”]
En fait c’est pire que ça : c’est sur une carte SD livrée avec l’appareil. J’en ai bien des copies, mais uploader presque 1 Go avec ma connexion (75ko/s :open_mouth:) c’est difficilement envisageable. :angry-banghead: [/quote]

Tu peux télécharger juste un bout si c’est une image iso:

[code]#!/bin/sh
FICHIER=$1
URL=$2
FICHIERMAJ=echo $FICHIER | tr '[:upper:]' '[:lower:]'
NOM=basename $FICHIER
ISO=/tmp/getfic-date +%s.iso
DEB=0
PAS=65536
FIN=expr $PAS - 1
FINP=$DEB
MAXDL=1048576
#4194304
ONCHERCHE=true
VITMIN=1024
while ($ONCHERCHE) ; do
echo curl -L -r $FINP-$FIN $URL
curl -L -r $FINP-$FIN $URL >> $ISO
isoinfo -l -R -i $ISO | tr ‘[:upper:]’ ‘[:lower:]’ | grep -v “^ *$” > /tmp/listing
while read ligne ; do
if echo $ligne | grep -q “^directory” ; then
DIR=echo $ligne | awk '{print $4}'
elif echo $ligne | grep -q “^-” ; then
ligne=echo $ligne | sed -e '1,$s/\[//g'| sed -e '1,$s/\]//g'
FIC=echo $ligne | awk '{print $11}' | sed -e 's/;1 *$//' | sed -e 's/\.$//'

echo $DIR$FIC $FIC $FICHIERMAJ

    if ( [ ! -z $FIC ] && ([ $DIR$FIC = $FICHIERMAJ ] || [ $FIC = $FICHIERMAJ ])) ; then
	ONCHERCHE=false
	OFFSET=`echo $ligne  | awk '{print $9}'`
	DEBUT=`expr $OFFSET \* 2048`
	LONGUEUR=`echo $ligne | awk '{print $5}'`

echo $OFFSET $DEBUT $LONGUEUR

	echo -n > $NOM
	while [ $LONGUEUR -ge $MAXDL ] ; do
	BOUT=`expr $DEBUT + $MAXDL - 1`
            curl -L -y 10 --speed-limit $VITMIN -r $DEBUT-$BOUT $URL > t_$NOM
	LONG=`ls -l t_$NOM | awk '{print $5}'` 
	if [ $LONG -eq $MAXDL ] ; then
	cat t_$NOM >> $NOM
	rm t_$NOM
	DEBUT=`expr $BOUT + 1`
	LONGUEUR=`expr $LONGUEUR - $MAXDL`
	else
	rm t_$NOM
	fi
	done
	BOUT=`expr $DEBUT + $LONGUEUR - 1`
	while [ $LONGUEUR -gt 0 ] ; do
		curl -L -y 10 --speed-limit $VITMIN  -r $DEBUT-$BOUT $URL > t_$NOM
            	LONG=`ls -l t_$NOM | awk '{print $5}'` 
            	if [ $LONG -eq $LONGUEUR ] ; then
            		cat t_$NOM >> $NOM
            		rm t_$NOM
			LONGUEUR=0
            	else
            		rm t_$NOM
            	fi
	done
	exit 0
    fi 
fi
done < /tmp/listing
if ($ONCHERCHE) ; then
    FINP=`expr $FIN + 1`
    FIN=`expr $FIN + $PAS`
    PAS=`expr $PAS + $PAS`
fi

done
[/code]
Ce script te permet de récupérer un fichier sur une image ISO sans charger toute l’image. Je l’avais utilisé pour travailler sur les images ISO de clefAgreg à travers une connexion 3G…