PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Welche Parameter versteht ein Kernelmodul



tomcom
02.04.13, 13:07
Bei WLAN-Karten kann man zum Beispiel mit dem Eintrag rt_xy_usb nohwcrypt=1
die Hardware-Verschlüssellung austellen.
modinfo rt_xy_usb gibt dies auch aus:


alias: usb:...
depends: ....
parm: nohwcrypt:Disable hardware encryption. (bool)

Aber kann das Kernelmodul noch mehr als nohwcrypt?
Ich suche etwas wie:
modinfo --show-all param rt_xy_usb

param nohwcrypt: bool
param powermgn: bool
param ...
Also sprich eine Ausgabe aller möglichen Parameter, die das Modul versteht.


Gruß,
Tom

tomcom
02.04.13, 17:37
Ich hab eine interessante bash-Funktion gefunden, die den Job erledigt:

function aa_mod_parameters ()
{
N=/dev/null;
C=`tput op` O=$(echo -en "\n`tput setaf 2`>>> `tput op`");
for mod in $(cat /proc/modules|cut -d" " -f1);
do
md=/sys/module/$mod/parameters;
[[ ! -d $md ]] && continue;
m=$mod;
d=`modinfo -d $m 2>$N | tr "\n" "\t"`;
echo -en "$O$m$C";
[[ ${#d} -gt 0 ]] && echo -n " - $d";
echo;
for mc in $(cd $md; echo *);
do
de=`modinfo -p $mod 2>$N | grep ^$mc 2>$N|sed "s/^$mc=//" 2>$N`;
echo -en "\t$mc=`cat $md/$mc 2>$N`";
[[ ${#de} -gt 1 ]] && echo -en " - $de";
echo;
done;
done
}

ThorstenHirsch
02.04.13, 17:41
Vielen Dank für die Lösung.
Ich hab' meist gegoogelt oder in den Kernel-Quellen bei der Documentation geschaut. Allerdings führte das nicht immer zum Erfolg. Schön, dass es auch eine technischere Lösung gibt.

Noether
03.04.13, 16:24
Dazu ist für die Anfänger hier noch zu sagen das man diese Funktion in die ~/.bashrc kopieren sollte und dann nur "aa_mod_parameters" als Kommandozeile eingeben muss.

Edit:
Ich habe die Funktion mal ausprobiert und kann die auch als User ausführen.
Der einzige Unterschied zur Ausführung von root ist das die beiden hid-Parameter nicht angezeigt werden.
Und die Funktion zeigt die Infos nur zu ungefähr der Hälfte der Module.
Zur anderen, zu der beispielsweise arc4 und nvidia gehören, wird nichts angezeigt, aber das liegt wohl
daran, das die keine Parameter haben, wie "systool -v -m modul_name" verrät.

Daneben stellt sich auch die Frage wie man denn die Ausgabe richtig speichert.
Mit einem angehängten "> text.txt" beomme ich statt der Zeile

>>> rt2800usb - Ralink RT2800 USB Wireless LAN driver

diese Zeile:

[32m>>> [39;49mrt2800usb[39;49m - Ralink RT2800 USB Wireless LAN driver.

Ein Workaround ist die Ausgabe mit der Maus zu markieren und zu kopieren, aber es geht doch sicherlich einfacher, oder? :confused:

ThorstenHirsch
03.04.13, 22:38
Es scheint kein Programm dafür zu geben. Aber probier's mal mit einer der hier angegebenen substitutions: http://unix.stackexchange.com/questions/4527/program-that-passes-stdin-to-stdout-with-color-codes-stripped

Noether
03.04.13, 23:39
Es scheint kein Programm dafür zu geben. Aber probier's mal mit einer der hier angegebenen substitutions: http://unix.stackexchange.com/questions/4527/program-that-passes-stdin-to-stdout-with-color-codes-stripped

Ja, danke.
Ich verwende nun diesen Alias:

alias aa_mod_parameters1='aa_mod_parameters | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"'

TheDarkRose
06.04.13, 14:38
Man könnte auch den Colorcode aus der Funktion nehmen


function aa_mod_parameters ()
{
N=/dev/null;
O=$(echo -en "\n>>> ");
for mod in $(cat /proc/modules|cut -d" " -f1);
do
md=/sys/module/$mod/parameters;
[[ ! -d $md ]] && continue;
m=$mod;
d=`modinfo -d $m 2>$N | tr "\n" "\t"`;
echo -en "$O$m";
[[ ${#d} -gt 0 ]] && echo -n " - $d";
echo;
for mc in $(cd $md; echo *);
do
de=`modinfo -p $mod 2>$N | grep ^$mc 2>$N|sed "s/^$mc=//" 2>$N`;
echo -en "\t$mc=`cat $md/$mc 2>$N`";
[[ ${#de} -gt 1 ]] && echo -en " - $de";
echo;
done;
done
}