1. Install FC2
2. Start anaconda to upgrade
anaconda bind mounts its own /dev for the upgraded system
3. Have anaconda upgrade
4. anaconda installs new packages. Including udev.
5. anaconda starts removing old packages. It gets to dev.
6. dev starts removing its files... including device nodes in the /dev shared
between anaconda and the upgraded system?
7. udev has the following trigger:
triggerpostun scriptlet (using /bin/sh) -- dev <= 0:3.12-1
if [ $2 = 0 ]; then
if [ -x /sbin/MAKEDEV ]; then
/bin/mknod /dev/null c 1 3
/sbin/start_udev >/dev/null 2>&1
if [ -e /dev/mapper/control -a -x /sbin/lvm ]; then
/sbin/lvm vgmknodes >/dev/null 2>&1
start_udev runs... which not only starts udev in the chroot, it also starts
loading modules - sound modules, hardware monitors, random drivers. It also
starts firing off all the helper programs for these - unmuting sound, etc.
All this during the end of the upgrade.
Not sure what we want to do here, but this probably isn't it. :)
I *think* this can be solved by adding dev to the upgrade_remove_blacklist;
this should run before the dev is bind mounted, even...
Yeah, sounds like a sane enough resolution I guess. That or the call to
start_udev in the trigger should call something which doesn't do all the module
loading stuff that udev has grown.
Hmm, we cannot disable module loading without loosing device creation, without
altering the rules...
Added dev to the upgrade_remove_blacklist