Aaron Griffin wrote:
On Sun, Mar 9, 2008 at 3:05 AM, Michal Soltys <soltys@xxxxxxxx> wrote:
ENV{MODALIAS}=="modaliases #1", OPTION="ignore_device"
ENV{MODALIAS}=="modaliases #2", OPTION="ignore_device"
This is way more complex than you think it is. Let me explain. A
typical module exposes it's aliases WITH wildcartds included. Here's
an example:
$ modinfo nvidiafb
alias: pci:v000010DEd*sv*sd*bc03sc*i*
If you want to write out modalias rules for this, you are welcome to.
I will give you a hint, though: each of those asterisks above is a 4
digit number. And that is just nvidia. Don't forget intel, ati,
unichrome, and all the other framebuffer modules out there.
But you can use that alias as-is in udev rules, as wildcards are supported.
As for generating, something analogous to...
cat >03-fb-block.rules <<EOF
ACTION!="add", GOTO="fb_block_end"
DRIVER=="?*", GOTO="fb_block_end"
ENV{MODALIAS}!="?*", GOTO="fb_block_end"
EOF
for i in `find /lib/modules/$(uname -r)/kernel/drivers/video/ -iname
"*fb*.ko"` ; do modinfo "$i" | sed -ne 's/alias:
*\(.*\)/ENV{MODALIAS}=="\1" OPTIONS="ignore_device"/ ;/^ENV/p'
>>03-fb-block.rules ; done
cat >>03-fb-block.rules <<EOF
LABEL="fb_block_end"
EOF
...would do the thing. The file is not tiny though ~300 rules for Arch's
generic kernel. But it's not an issue of any sort for udevd.
My general idea was to get that into kernel's, or udev's PKGBUILD.