'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
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"