You can block frambuffer in udev, but you have to block the driver by its modalias or other attributes (similary as if you tried to block sound through udev). For example, following rule would do the thing in my case, on one of my machines (that has some old ati card): SUBSYSTEM=="pci", ATTR{vendor}=="0x1002", ATTR{device}=="0x5446", OPTIONS="ignore_device" Or you could just use modalias. For example - provide auto generated 03-fb-block.rules by PKGBUILD in form similar to: ACTION!="add", GOTO="fb_block_end" DRIVER=="?*", GOTO="fb_block_end" ENV{MODALIAS}!="?*", GOTO="fb_block_end" ENV{MODALIAS}=="modaliases #1", OPTION="ignore_device" ENV{MODALIAS}=="modaliases #2", OPTION="ignore_device" ..... LABEL="fb_block_end" This should be blazing fast, without any need for extra logic in module loading scripts you call from udev. Moreover - if users don't want it - they can simply mv or rm that file. However you name the file, make sure it's parsed before big compound udev.rules you use. Btw - is there any reason why fbcon is built into kernel, instead of being left as a module (also, fbcon never loads automatically) ? Consoles are not taken until fbcon is activated - so maybe it would solve the issue with binary blobs having problems with active framebuffer driver. Just a thought (although as per fbcon documentation, depending on how well the framebuffer driver is written, consoles might end with garbaged screen w/o fbcon ; they shouldn't though). cheers Michal