On Fri, Feb 22, 2008 at 6:03 PM, Aaron Griffin <aaronmgriffin@gmail.com> wrote:
On Fri, Feb 22, 2008 at 5:56 PM, eliott <eliott@cactuswax.net> wrote:
On 2/22/08, Aaron Griffin <aaronmgriffin@gmail.com> wrote:
Ok, guys - honest question. Because udev is being a big pain in the ass with the way we do module blacklisting, we might want to reevaluate it.
Right now we support blacklisting of modules in rc.conf, in addition to a kernel param disablemodules=x,y,z
Udev autoloading is controlled by MOD_AUTOLOAD and the load_modules kernel param.
We *can* use modprobe based blacklisting here, but we lose the above items. blacklisting will be controlled only by /etc/modprobe.conf (and modprobe.d/*) and we lose the ability to shut it off via rc.conf.
What do we gain? Speed and simplicity. No extraneous scripts to handle this stuff, and all that jazz.
This is how fast this script was when I originally wrote it: http://img.phraktured.net/other/udev_modules_boot.png Now it apparently takes 3 times as long due to all the added blacklisting cruft
What do we lose? Robustness. See below for an explanation of the blacklist changes
I thin modprobe.conf would probably be 'cleaner' and 'closer to home'. It would probably be a little less 'classic arch', as it moves things away from rc.conf instead of into it. It might be the right thing to do though..not sure.
That's about where I am right now. It feels cleaner, but begins moving things out of rc.conf, which is un-Archy. I dunno, I'm hoping to hear other people's opinions on this, as I'm holding off pushing out a udev with start_udev still in it until we decide what to do here... anyone have a strong opinion?
I like it in rc.conf. I've always loved the single point of config for most startup things, and I know I see this as a great selling point of Arch in our own forums and elsewhere. I'd really rather not move it outside of there. This is a point someone made earlier in the thread that I wanted to address, and it went something like this: "why don't we just do the blacklist variable stuff in the initscripts" Aaron covered it most of the way, but I just wanted to make it clear that every time you plug in a USB device or make any other hardware chage, udev triggers. If I've added a blacklisted module since the last time I booted (which may have been 50 days ago), then I want it to not load, and any processing of udev-related stuff outside of the udev framework would mean the module I added would not be blacklisted.
I do have one concern though. How would this effect mkinitcpio, and excluding modules via grub at boot time (whether from an install cd or from a real boot and with an initrd)?
That's harder. But we have two options. Firstly, the initramfs udev can have different sets of rules, there's nothing wrong with that. Secondly, before starting udev in the initramfs, we can do something like:
for x in $disablemodules; do echo "blacklist $x" >> /etc/modprobe.conf done
/me shrugs
Still doesn't take into account the whole "load all dependencies" thing though. Bummer. -Dan