'uname -rms' -> "Linux 3.0.7-spott x86_64" On Thu-2011/10/20-09:41 Myra Nelson wrote: > Error messages yes, but no warning about problems with the image and > the image is created and boots fine. Keeping up with the mailing list > makes all the difference in the world. My system broke with udev-174-1. I have rules renaming eth* according to their MACs for consistency, guarding against dependency on order-of-detection, plus rules to customize a wlan running on an USB device. These rules didn't run. Basically, there is one rule file[1] calling out to a number of local "simple" rules. These in turn are very short, containing only (LOCAL_) "RUN"/"NAME" commands. The main rule assembles a name out of subsystem, addresses, interfaces etc. This name points into a separate directory "/etc/udev-local" where the appropriate one- or two liners live, and there's a logging rule telling me what file names to use if there's anything missing. All this is less complex than eg. udisks and relies only on udevd. Are rules in /etc/udev ever called in the new version? Do I need some compatibility to make this happen? I didn't have the old udev package to downgrade to, but a backup from where the old binaries and lib/udev stuff could be restored. Otherwise I couldn't even post this. clemens [1] /etc/udev/rules.d/99-local-simple.rules # /root/udev-rules/99-local-simple.rules # == /etc/udev/rules.d/99-local-simple.rules # _date: 20091002-1615_ # see <url:man:7 udev> ENV{iam} = "99-local-simple" ENV{LOCAL_LOGG} = "/usr/bin/logger -p daemon.info --" ACTION == "add", ENV{.cmd} = "add", GOTO = "local_simple_check_subsys" ACTION == "change", ENV{.cmd} = "change", GOTO = "local_simple_check_subsys" ACTION == "remove", ENV{.cmd} = "remove", GOTO = "local_simple_check_subsys" GOTO = "local_simple_end" LABEL = "local_simple_check_subsys" SUBSYSTEM == "block", ENV{DEVTYPE} == "partition", GOTO = "local_collect_disk_args" SUBSYSTEM == "bluetooth", ENV{.subsystem} = "bluetooth", GOTO = "local_collect_if_args" SUBSYSTEM == "net", ENV{.subsystem} = "net", GOTO = "local_collect_if_args" SUBSYSTEM == "rfkill", ENV{.subsystem} = "rfkill", GOTO = "local_collect_if_args" GOTO = "local_simple_end" LABEL = "local_collect_disk_args" # should anybody have setup site specific values, get them IMPORT{parent} = "SPOTT_*" #IMPORT{parent} = "PCI_*" #IMPORT{parent} = "HID_*" IMPORT{parent} = "ID_*" ENV{.devtype} = "partition" ENV{.subsystem} = "block" ENV{ID_FS_TYPE} == "", ENV{LOCAL_EX} = "no filesystem", GOTO = "local_simple_exerr" ENV{ID_FS_UUID} == "", ENV{ID_FS_LABEL} == "", ENV{LOCAL_EX} = "neither label nor uuid", GOTO = "local_simple_exerr" ENV{ID_FS_UUID} == "?*", ENV{.fs} = "$env{ID_FS_TYPE}-$env{ID_FS_UUID}" ENV{ID_FS_LABEL} == "?*", ENV{.fs} = "$env{ID_FS_TYPE}-$env{ID_FS_LABEL}" ENV{.devid} = "$env{.devtype}-$env{.fs}" ENV{LOCAL_EX} = "$env{.cmd} $env{.subsystem} $env{.devid}" ENV{LOCAL_LOGG} == "?*", RUN += "$env{LOCAL_LOGG} $env{iam}: msg: $env{LOCAL_EX}" GOTO = "local_get_controls" LABEL = "local_collect_if_args" # should anybody have setup site specific values, get them IMPORT{parent} = "SPOTT_*" #IMPORT{parent} = "PCI_*" #IMPORT{parent} = "HID_*" IMPORT{parent} = "ID_*" ENV{.devtype} = "unknown" ATTR{address} == "?*", ENV{.devtype} = "$attr{address}" ENV{.devtype} == "unknown", ATTR{name} == "?*", ENV{.devtype} = "$attr{name}" #ENV{.devtype} == "unknown", ENV{PRODUCT} == "?*", ENV{.devtype} = "$env{PRODUCT}" ENV{.devtype} == "unknown", ENV{.devtype} = "$kernel" ENV{.devid} = "$env{.devtype}" ENV{LOCAL_EX} = "$env{.cmd} $env{.subsystem} $env{.devid}" ENV{LOCAL_LOGG} == "?*", RUN += "$env{LOCAL_LOGG} $env{iam}: msg: $env{LOCAL_EX}" #GOTO = "local_get_controls" LABEL = "local_get_controls" # to make all this configurable, either an external program or the # "test-trick" is necessary, because the "==" operator can only match on # literals! ENV{LOCAL_DEV} = "/etc/udev-local/$env{iam}-$env{.subsystem}-$env{.devid}-$env{.cmd}" TEST != "$env{LOCAL_DEV}", ENV{LOCAL_EX} = "no $env{LOCAL_DEV}", GOTO = "local_simple_exerr" IMPORT = "$env{LOCAL_DEV}" ENV{LOCAL_LOGG} == "?*", RUN += "$env{LOCAL_LOGG} LOCAL_DEV:$env{LOCAL_DEV} LOCAL_RUN:$env{LOCAL_RUN}" ENV{LOCAL_OPT_last_rule} == "?*", GOTO = "local_simple_lastrule" ENV{LOCAL_GROUP} == "?*", GROUP = "$env{LOCAL_GROUP}" ENV{LOCAL_MODE} == "?*", MODE = "$env{LOCAL_MODE}" ENV{LOCAL_NAME} == "?*", NAME = "$env{LOCAL_NAME}" ENV{LOCAL_OWNER} == "?*", OWNER = "$env{LOCAL_OWNER}" ENV{LOCAL_PROGRAM} == "?*", PROGRAM = "$env{LOCAL_PROGRAM}", ENV{.result} = "%c" ENV{LOCAL_LOGG} == "?*", ENV{.result} == "?*", RUN += "$env{LOCAL_LOGG} LOCAL_DEV:$env{LOCAL_DEV} RESULT:$env{.result}" ENV{LOCAL_RUN} == "?*", RUN += "$env{LOCAL_RUN}" ENV{LOCAL_SYMLINK} == "?*", SYMLINK += "$env{LOCAL_SYMLINK}" GOTO = "local_simple_end" LABEL = "local_simple_lastrule" ENV{LOCAL_GROUP} == "?*", GROUP = "$env{LOCAL_GROUP}", OPTIONS="last_rule" ENV{LOCAL_MODE} == "?*", MODE = "$env{LOCAL_MODE}", OPTIONS="last_rule" ENV{LOCAL_NAME} == "?*", NAME = "$env{LOCAL_NAME}", OPTIONS="last_rule" ENV{LOCAL_OWNER} == "?*", OWNER = "$env{LOCAL_OWNER}", OPTIONS="last_rule" ENV{LOCAL_PROGRAM} == "?*", PROGRAM = "$env{LOCAL_PROGRAM}", ENV{.result} = "%c" ENV{LOCAL_LOGG} == "?*", ENV{.result} == "?*", RUN += "$env{LOCAL_LOGG} LOCAL_DEV:$env{LOCAL_DEV} RESULT:$env{.result}" ENV{LOCAL_RUN} == "?*", RUN += "$env{LOCAL_RUN}", OPTIONS="last_rule" ENV{LOCAL_SYMLINK} == "?*", SYMLINK += "$env{LOCAL_SYMLINK}" GOTO = "local_simple_end" # error checking LABEL = "local_simple_exerr" ENV{LOCAL_LOGG} == "?*", RUN += "$env{LOCAL_LOGG} $env{iam}: error: $env{LOCAL_EX}" LABEL="local_simple_end"