D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
proc
/
self
/
root
/
proc
/
thread-self
/
root
/
home
/
vblioqus
/
karachi777.vip
/
in
/
106014
/
900508
/
Filename :
rules.d.tar
back
Copy
95-dm-notify.rules 0000444 00000000743 15154124753 0007772 0 ustar 00 # Copyright (C) 2009 Red Hat, Inc. All rights reserved. # # This file is part of LVM2. # Udev rules for device-mapper devices. # # These rules are responsible for sending a notification to a process # waiting for completion of udev rules. The process is identified by # a cookie value sent within "change" and "remove" events (the cookie # value is set before by that process for every action requested). ENV{DM_COOKIE}=="?*", RUN+="/usr/sbin/dmsetup udevcomplete $env{DM_COOKIE}" 13-dm-disk.rules 0000444 00000003402 15154124753 0007375 0 ustar 00 # Copyright (C) 2009 Red Hat, Inc. All rights reserved. # # This file is part of LVM2. # Udev rules for device-mapper devices. # # These rules create symlinks in /dev/disk directory. # Symlinks that depend on probing filesystem type, # label and uuid are created only if the device is not # suspended. # "add" event is processed on coldplug only! ACTION!="add|change", GOTO="dm_end" ENV{DM_UDEV_RULES_VSN}!="?*", GOTO="dm_end" ENV{DM_UDEV_DISABLE_DISK_RULES_FLAG}=="1", GOTO="dm_end" SYMLINK+="disk/by-id/dm-name-$env{DM_NAME}" ENV{DM_UUID}=="?*", SYMLINK+="disk/by-id/dm-uuid-$env{DM_UUID}" ENV{DM_SUSPENDED}=="1", GOTO="dm_end" ENV{DM_NOSCAN}=="1", GOTO="dm_watch" IMPORT{builtin}="blkid" ENV{DM_UDEV_LOW_PRIORITY_FLAG}=="1", OPTIONS="link_priority=-100" ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{ID_FS_UUID_ENC}=="?*", SYMLINK+="disk/by-uuid/$env{ID_FS_UUID_ENC}" ENV{ID_FS_USAGE}=="filesystem|other", ENV{ID_FS_LABEL_ENC}=="?*", SYMLINK+="disk/by-label/$env{ID_FS_LABEL_ENC}" ENV{ID_PART_ENTRY_UUID}=="?*", SYMLINK+="disk/by-partuuid/$env{ID_PART_ENTRY_UUID}" ENV{ID_PART_ENTRY_SCHEME}=="gpt", ENV{ID_PART_ENTRY_NAME}=="?*", SYMLINK+="disk/by-partlabel/$env{ID_PART_ENTRY_NAME}" ENV{ID_PART_ENTRY_SCHEME}=="gpt", ENV{ID_PART_GPT_AUTO_ROOT}=="1", SYMLINK+="gpt-auto-root" # Add inotify watch to track changes on this device. # Using the watch rule is not optimal - it generates a lot of spurious # and useless events whenever the device opened for read-write is closed. # The best would be to generete the event directly in the tool changing # relevant information so only relevant events will be processed # (like creating a filesystem, changing filesystem label etc.). # # But let's use this until we have something better... LABEL="dm_watch" OPTIONS+="watch" LABEL="dm_end" 90-libinput-fuzz-override.rules 0000644 00000002116 15154124753 0012514 0 ustar 00 # Do not edit this file, it will be overwritten on update # # This file contains lookup rules for libinput model-specific quirks. # IT IS NOT A STABLE API AND SUBJECT TO CHANGE AT ANY TIME ACTION!="add|change", GOTO="libinput_fuzz_override_end" KERNEL!="event*", GOTO="libinput_fuzz_override_end" # Two-step process: fuzz-extract sets the LIBINPUT_FUZZ property and # fuzz-to-zero sets the kernel fuzz to zero. They must be in IMPORT and RUN, # respectively, to correctly interact with the 60-evdev.hwdb # # Drawback: if this rule is triggered more than once, we'll lose the fuzz # information (because the kernel fuzz will then be zero). Nothing we can do # about that. ATTRS{capabilities/abs}!="0", \ ENV{ID_INPUT_TOUCHPAD}=="1", \ IMPORT{program}="libinput-fuzz-extract %S%p", \ RUN{program}+="libinput-fuzz-to-zero %S%p", \ GOTO="libinput_fuzz_override_end" ATTRS{capabilities/abs}!="0", \ ENV{ID_INPUT_TOUCHSCREEN}=="1", \ IMPORT{program}="libinput-fuzz-extract %S%p", \ RUN{program}+="libinput-fuzz-to-zero %S%p", \ GOTO="libinput_fuzz_override_end" LABEL="libinput_fuzz_override_end" 70-touchpad.rules 0000644 00000000731 15154124753 0007663 0 ustar 00 # do not edit this file, it will be overwritten on update ACTION=="remove", GOTO="touchpad_end" ENV{ID_INPUT}=="", GOTO="touchpad_end" ENV{ID_INPUT_TOUCHPAD}=="", GOTO="touchpad_end" KERNEL!="event*", GOTO="touchpad_end" # touchpad:<subsystem>:v<vid>p<pid>:name:<name>:* KERNELS=="input*", ENV{ID_BUS}!="", \ IMPORT{builtin}="hwdb 'touchpad:$env{ID_BUS}:v$attr{id/vendor}p$attr{id/product}:name:$attr{name}:'", \ GOTO="touchpad_end" LABEL="touchpad_end" 71-prefixdevname.rules 0000644 00000000623 15154124753 0010712 0 ustar 00 # Do not edit this file, it will be overwritten on updates SUBSYSTEM!="net", GOTO="net_ifnames_prefix_end" ACTION!="add", GOTO="net_ifnames_prefix_end" ATTR{type}!="1", GOTO="net_ifnames_prefix_end" IMPORT{cmdline}="net.ifnames.prefix" ENV{net.ifnames.prefix}!="?*", GOTO="net_ifnames_prefix_end" PROGRAM="/usr/lib/udev/prefixdevname", RESULT=="?*", NAME="$result" LABEL="net_ifnames_prefix_end" 65-context.rules 0000644 00000003047 15154124753 0007547 0 ustar 00 # NIC detach workaround for recontextualization on OpenNebula < 5.10.3 # https://github.com/OpenNebula/one/issues/4130 # https://github.com/OpenNebula/one/issues/4194 SUBSYSTEM=="net", ACTION=="remove", \ ENV{ID_BUS}=="?*", \ RUN+="/bin/sh -c 'test -f /var/run/one-context/context.sh.local && echo >> /var/run/one-context/context.sh.local; test -f /var/run/one-context/context.sh.network && echo >> /var/run/one-context/context.sh.network'" # On NIC hotplug the delayed reconfiguration is triggered. SUBSYSTEM=="net", ACTION=="add", \ TAG+="systemd", ENV{SYSTEMD_WANTS}+="one-context-reconfigure-delayed.service" SUBSYSTEM=="net", ACTION=="remove", \ RUN+="/usr/bin/systemctl --no-block start one-context-reconfigure-delayed.service" # Change of CONTEXT CD-ROM triggers immediate reconfiguration, # which stops any existing delayed reconfiguration. SUBSYSTEM=="block", ACTION=="change", \ ENV{ID_CDROM}=="1", \ ENV{ID_FS_TYPE}=="iso9660", \ ENV{ID_FS_LABEL_ENC}=="CONTEXT", \ RUN+="/usr/bin/systemctl --no-block start one-context-reconfigure.service" # Handle disk resize SUBSYSTEM=="block", ACTION=="change", \ ENV{RESIZE}=="1", \ RUN+="/usr/bin/systemctl --no-block start one-context-force.service" SUBSYSTEM=="scsi", ACTION=="change", \ ENV{SDEV_UA}=="CAPACITY_DATA_HAS_CHANGED", \ RUN+="/usr/bin/systemctl --no-block start one-context-force.service" # Handle swap hot-attach SUBSYSTEM=="block", ACTION=="add", \ ENV{ID_FS_TYPE}=="swap", \ ENV{DM_ACTIVATION}!="1", \ RUN+="/usr/bin/systemctl --no-block start one-context-force.service" 71-biosdevname.rules 0000644 00000001743 15154124753 0010355 0 ustar 00 SUBSYSTEM!="net", GOTO="netdevicename_end" ACTION!="add", GOTO="netdevicename_end" NAME=="?*", GOTO="netdevicename_end" ATTR{type}!="1", GOTO="netdevicename_end" ENV{DEVTYPE}=="?*", GOTO="netdevicename_end" # kernel command line "biosdevname={0|1}" can turn off/on biosdevname IMPORT{cmdline}="biosdevname" ENV{biosdevname}=="?*", ENV{UDEV_BIOSDEVNAME}="$env{biosdevname}" # ENV{UDEV_BIOSDEVNAME} can be used for blacklist/whitelist # but will be overwritten by the kernel command line argument ENV{UDEV_BIOSDEVNAME}=="0", GOTO="netdevicename_end" ENV{UDEV_BIOSDEVNAME}=="1", GOTO="netdevicename_start" # off by default GOTO="netdevicename_end" LABEL="netdevicename_start" # using NAME= instead of setting INTERFACE_NAME, so that persistent # names aren't generated for these devices, they are "named" on each boot. SUBSYSTEMS=="pci", PROGRAM="/sbin/biosdevname --smbios 2.6 --nopirq --policy physical -i %k", NAME="%c" OPTIONS+="string_escape=replace" LABEL="netdevicename_end" 71-seat.rules 0000644 00000005306 15154124753 0007014 0 ustar 00 # SPDX-License-Identifier: LGPL-2.1+ # # This file is part of systemd. # # systemd is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation; either version 2.1 of the License, or # (at your option) any later version. ACTION=="remove", GOTO="seat_end" TAG=="uaccess", SUBSYSTEM!="sound", TAG+="seat" SUBSYSTEM=="sound", KERNEL=="card*", TAG+="seat" SUBSYSTEM=="input", KERNEL=="input*", TAG+="seat" SUBSYSTEM=="graphics", KERNEL=="fb[0-9]*", TAG+="seat", TAG+="master-of-seat" SUBSYSTEM=="drm", KERNEL=="card[0-9]*", TAG+="seat", TAG+="master-of-seat" SUBSYSTEM=="usb", ATTR{bDeviceClass}=="09", TAG+="seat" # 'Plugable' USB hub, sound, network, graphics adapter SUBSYSTEM=="usb", ATTR{idVendor}=="2230", ATTR{idProduct}=="000[13]", ENV{ID_AUTOSEAT}="1" # qemu (version 2.4+) has a PCI-PCI bridge (-device pci-bridge-seat) to group # devices belonging to one seat. See: # http://git.qemu.org/?p=qemu.git;a=blob;f=docs/multiseat.txt SUBSYSTEM=="pci", ATTR{vendor}=="0x1b36", ATTR{device}=="0x000a", TAG+="seat", ENV{ID_AUTOSEAT}="1" # Mimo 720, with integrated USB hub, displaylink graphics, and e2i # touchscreen. This device carries no proper VID/PID in the USB hub, # but it does carry good ID data in the graphics component, hence we # check it from the parent. There's a bit of a race here however, # given that the child devices might not exist yet at the time this # rule is executed. To work around this we'll trigger the parent from # the child if we notice that the parent wasn't recognized yet. # Match parent SUBSYSTEM=="usb", ATTR{idVendor}=="058f", ATTR{idProduct}=="6254", \ ATTR{%k.2/idVendor}=="17e9", ATTR{%k.2/idProduct}=="401a", ATTR{%k.2/product}=="mimo inc", \ ENV{ID_AUTOSEAT}="1", ENV{ID_AVOID_LOOP}="1" # Match child, look for parent's ID_AVOID_LOOP SUBSYSTEM=="usb", ATTR{idVendor}=="17e9", ATTR{idProduct}=="401a", ATTR{product}=="mimo inc", \ ATTR{../idVendor}=="058f", ATTR{../idProduct}=="6254", \ IMPORT{parent}="ID_AVOID_LOOP" # Match child, retrigger parent SUBSYSTEM=="usb", ATTR{idVendor}=="17e9", ATTR{idProduct}=="401a", ATTR{product}=="mimo inc", \ ATTR{../idVendor}=="058f", ATTR{../idProduct}=="6254", \ ENV{ID_AVOID_LOOP}=="", \ RUN+="/usr/bin/udevadm trigger --parent-match=%p/.." TAG=="seat", ENV{ID_PATH}=="", IMPORT{builtin}="path_id" TAG=="seat", ENV{ID_FOR_SEAT}=="", ENV{ID_PATH_TAG}!="", ENV{ID_FOR_SEAT}="$env{SUBSYSTEM}-$env{ID_PATH_TAG}" SUBSYSTEM=="input", ATTR{name}=="Wiebetech LLC Wiebetech", RUN+="/usr/bin/loginctl lock-sessions" LABEL="seat_end" 91-drm-modeset.rules 0000644 00000000070 15154124753 0010273 0 ustar 00 KERNEL=="controlD[0-9]*", SUBSYSTEM=="drm", MODE="0600" 90-iprutils.rules 0000644 00000000106 15154124753 0007725 0 ustar 00 DRIVERS=="ipr", TAG+="systemd", ENV{SYSTEMD_WANTS}+="iprutils.target" 63-fc-wwpn-id.rules 0000644 00000001160 15154124753 0010026 0 ustar 00 # # FC WWPN-based by-path links # ACTION!="add|change", GOTO="fc_wwpn_end" KERNEL!="sd*", GOTO="fc_wwpn_end" ENV{DEVTYPE}=="disk", IMPORT{program}="fc_wwpn_id %p" ENV{DEVTYPE}=="partition", IMPORT{parent}="FC_*" ENV{FC_TARGET_WWPN}!="?*", GOTO="fc_wwpn_end" ENV{FC_INITIATOR_WWPN}!="?*", GOTO="fc_wwpn_end" ENV{FC_TARGET_LUN}!="?*", GOTO="fc_wwpn_end" ENV{DEVTYPE}=="disk", SYMLINK+="disk/by-path/fc-$env{FC_INITIATOR_WWPN}-$env{FC_TARGET_WWPN}-lun-$env{FC_TARGET_LUN}" ENV{DEVTYPE}=="partition", SYMLINK+="disk/by-path/fc-$env{FC_INITIATOR_WWPN}-$env{FC_TARGET_WWPN}-lun-$env{FC_TARGET_LUN}-part%n" LABEL="fc_wwpn_end" 85-nm-unmanaged.rules 0000644 00000003735 15154124753 0010440 0 ustar 00 # Do not modify this file, it will get overwritten on updates. # To override or extend the rules place a file in /etc/udev/rules.d SUBSYSTEM!="net", GOTO="nm_unmanaged_end" ACTION!="add|change|move", GOTO="nm_unmanaged_end" # VirtualBox host networking. Out-of-tree driver that looks like an ordinary # Ethernet. No parent device (lives in /virtual/), no support for ethtool # to identify the driver, MAC address defaults to 08:00:27:, but can be # changed. Interface name will have to do, it's always vboxnet*. ENV{INTERFACE}=="vboxnet[0-9]*", ENV{NM_UNMANAGED}="1" # VMWare host networking. Out-of-tree driver that looks like an ordinary # Ethernet. No parent device (lives in /virtual/), no support for # ethtool to identify the driver. They have their own MAC prefix that # can not be changed. ATTR{address}=="00:50:56:*", ENV{INTERFACE}=="vmnet[0-9]*", ENV{NM_UNMANAGED}="1" # Parallels Workstation host networking. Out-of-tree driver that looks like # an ordinary Ethernet. No parent device (lives in /virtual/), no support for # ethtool to identify the driver and the interface name is too generic. # However, they have their own MAC prefix that can not be changed. ATTR{address}=="00:1c:42:*", ENV{INTERFACE}=="vnic[0-9]*", ENV{NM_UNMANAGED}="1" # Virtual Ethernet device pair. Often used to communicate with a peer interface # in another net namespace and managed by libvirt, Docker or the like. # Generally we don't want to mess with those. One exception would be the # full system containers, like LXC or LXD. LXC containers run via libvirt # don't use udev, so this doesn't apply. LXD does, though. To deal with the # LXD situation, let's treat the devices called eth* as regular ethernet. ENV{ID_NET_DRIVER}=="veth", ENV{INTERFACE}!="eth[0-9]*", ENV{NM_UNMANAGED}="1" # USB gadget device. Unmanage by default, since whatever created it # might want to set it up itself (e.g. activate an ipv4.method=shared # connection). ENV{DEVTYPE}=="gadget", ENV{NM_UNMANAGED}="1" LABEL="nm_unmanaged_end" 60-net.rules 0000644 00000000201 15154124753 0006631 0 ustar 00 ACTION=="add", SUBSYSTEM=="net", DRIVERS=="?*", ATTR{type}=="1", PROGRAM="/lib/udev/rename_device", RESULT=="?*", NAME="$result" 65-libwacom.rules 0000644 00000002211 15154124753 0007650 0 ustar 00 # udev rules for libwacom supported devices ACTION!="add|change", GOTO="libwacom_end" KERNEL!="event[0-9]*", GOTO="libwacom_end" # HUION and GAOMON consumer and system control devices are not tablets. ATTRS{name}=="* Consumer Control", GOTO="libwacom_end" ATTRS{name}=="* System Control", GOTO="libwacom_end" # Match all serial wacom tablets with a serial ID starting with WACf ENV{ID_BUS}=="tty|pnp", ATTRS{id}=="WACf*", ENV{ID_INPUT}="1", ENV{ID_INPUT_TABLET}="1", GOTO="libwacom_end" ENV{ID_BUS}=="tty|pnp", ATTRS{id}=="FUJ*", ENV{ID_INPUT}="1", ENV{ID_INPUT_TABLET}="1", GOTO="libwacom_end" # use the /sys/class/input/eventXXX/device/modalias as lookup key, prefixed # by libwacom:<device name>: # This lookup key is a contract between the udev rules and the hwdb entries. # It is not considered public API and may change. KERNELS=="input*", \ IMPORT{builtin}="hwdb --subsystem=input '--lookup-prefix=libwacom:name:$attr{name}:'" # We can't unset properties through the hwdb but we can set them to zero. # So let's have a rule that converts the 0 properties to unset ones. ENV{ID_INPUT_JOYSTICK}=="0", ENV{ID_INPUT_JOYSTICK}="" LABEL="libwacom_end" 10-dm.rules 0000444 00000016142 15154124753 0006447 0 ustar 00 # Copyright (C) 2009 Red Hat, Inc. All rights reserved. # # This file is part of LVM2. # Udev rules for device-mapper devices. # # These rules create a DM control node in /dev/mapper directory. # The rules also create nodes named dm-x (x is a number) in /dev # directory and symlinks to these nodes with names given by # the actual DM names. Some udev environment variables are set # for use in later rules: # DM_NAME - actual DM device's name # DM_UUID - UUID set for DM device (blank if not specified) # DM_SUSPENDED - suspended state of DM device (0 or 1) # DM_UDEV_RULES_VSN - DM udev rules version # # These rules cover only basic device-mapper functionality in udev. # # Various DM subsystems may contain further subsystem-specific rules # in 11-dm-<subsystem_name>.rules which should be installed together # with the DM subsystem and which extend these basic rules. # For example: # 11-dm-lvm.rules for LVM subsystem # 11-dm-mpath.rules for multipath subsystem (since version 0.6.0, recommended!) # # Even more specific rules may be required by subsystems so always # check subsystem's upstream repository for recent set of rules. # Also, keep in mind that recent rules may also require recent # subsystem-specific binaries. KERNEL=="device-mapper", NAME="mapper/control" SUBSYSTEM!="block", GOTO="dm_end" KERNEL!="dm-[0-9]*", GOTO="dm_end" # Device created, major and minor number assigned - "add" event generated. # Table loaded - no event generated. # Device resumed (or renamed) - "change" event generated. # Device removed - "remove" event generated. # # The dm-X nodes are always created, even on "add" event, we can't suppress # that (the node is created even earlier with devtmpfs). All the symlinks # (e.g. /dev/mapper) are created in right time after a device has its table # loaded and is properly resumed. For this reason, direct use of dm-X nodes # is not recommended. ACTION!="add|change", GOTO="dm_end" # Decode udev control flags and set environment variables appropriately. # These flags are encoded in DM_COOKIE variable that was introduced in # kernel version 2.6.31. Therefore, we can use this feature with # kernels >= 2.6.31 only. Cookie is not decoded for remove event. ENV{DM_COOKIE}=="?*", IMPORT{program}="/usr/sbin/dmsetup udevflags $env{DM_COOKIE}" # Rule out easy-to-detect inappropriate events first. ENV{DISK_RO}=="1", GOTO="dm_disable" # There is no cookie set nor any flags encoded in events not originating # in libdevmapper so we need to detect this and try to behave correctly. # For such spurious events, regenerate all flags from current udev database content # (this information would normally be inaccessible for spurious ADD and CHANGE events). ENV{DM_UDEV_PRIMARY_SOURCE_FLAG}=="1", ENV{DM_ACTIVATION}="1", GOTO="dm_flags_done" IMPORT{db}="DM_UDEV_DISABLE_DM_RULES_FLAG" IMPORT{db}="DM_UDEV_DISABLE_SUBSYSTEM_RULES_FLAG" IMPORT{db}="DM_UDEV_DISABLE_DISK_RULES_FLAG" IMPORT{db}="DM_UDEV_DISABLE_OTHER_RULES_FLAG" IMPORT{db}="DM_UDEV_LOW_PRIORITY_FLAG" IMPORT{db}="DM_UDEV_DISABLE_LIBRARY_FALLBACK_FLAG" IMPORT{db}="DM_UDEV_PRIMARY_SOURCE_FLAG" IMPORT{db}="DM_UDEV_FLAG7" IMPORT{db}="DM_UDEV_RULES_VSN" LABEL="dm_flags_done" # Normally, we operate on "change" events. But when coldplugging, there's an # "add" event present. We have to recognize this and do our actions in this # particular situation, too. Also, we don't want the nodes to be created # prematurely on "add" events while not coldplugging. We check # DM_UDEV_PRIMARY_SOURCE_FLAG to see if the device was activated correctly # before and if not, we ignore the "add" event totally. This way we can support # udev triggers generating "add" events (e.g. "udevadm trigger --action=add" or # "echo add > /sys/block/<dm_device>/uevent"). The trigger with "add" event is # also used at boot to reevaluate udev rules for all existing devices activated # before (e.g. in initrd). If udev is used in initrd, we require the udev init # script to not remove the existing udev database so we can reuse the information # stored at the time of device activation in the initrd. ACTION!="add", GOTO="dm_no_coldplug" ENV{DM_UDEV_RULES_VSN}!="1", ENV{DM_UDEV_PRIMARY_SOURCE_FLAG}!="1", GOTO="dm_disable" ENV{DM_ACTIVATION}="1" LABEL="dm_no_coldplug" # Putting it together, following table is used to recognize genuine and spurious events. # N.B. Spurious events are generated based on use of the WATCH udev # rule or by triggering an event manually by "udevadm trigger" call # or by "echo <event_name> > /sys/block/dm-X/uevent". # # EVENT DM_UDEV_PRIMARY_SOURCE_FLAG DM_ACTIVATION # ====================================================================== # add event (genuine) 0 0 # change event (genuine) 1 1 # add event (spurious) # |_ dev still not active 0 0 # \_ dev already active 1 1 # change event (spurious) # |_ dev still not active 0 0 # \_ dev already active 1 0 # "dm" sysfs subdirectory is available in newer versions of DM # only (kernels >= 2.6.29). We have to check for its existence # and use dmsetup tool instead to get the DM name, uuid and # suspended state if the "dm" subdirectory is not present. # The "suspended" item was added even later (kernels >= 2.6.31), # so we also have to call dmsetup if the kernel version used # is in between these releases. TEST=="dm", ENV{DM_NAME}="$attr{dm/name}", ENV{DM_UUID}="$attr{dm/uuid}", ENV{DM_SUSPENDED}="$attr{dm/suspended}" TEST!="dm", IMPORT{program}="/usr/sbin/dmsetup info -j %M -m %m -c --nameprefixes --noheadings --rows -o name,uuid,suspended" ENV{DM_SUSPENDED}!="?*", IMPORT{program}="/usr/sbin/dmsetup info -j %M -m %m -c --nameprefixes --noheadings --rows -o suspended" # dmsetup tool provides suspended state information in textual # form with values "Suspended"/"Active". We translate it to # 0/1 respectively to be consistent with sysfs values. ENV{DM_SUSPENDED}=="Active", ENV{DM_SUSPENDED}="0" ENV{DM_SUSPENDED}=="Suspended", ENV{DM_SUSPENDED}="1" # This variable provides a reliable way to check that device-mapper # rules were installed. It means that all needed variables are set # by these rules directly so there's no need to acquire them again # later. Other rules can alternate the functionality based on this # fact (e.g. fallback to rules that behave correctly even without # these rules installed). It also provides versioning for any # possible future changes. # VSN 1 - original rules # VSN 2 - add support for synthesized events ENV{DM_UDEV_RULES_VSN}="2" ENV{DM_UDEV_DISABLE_DM_RULES_FLAG}!="1", ENV{DM_NAME}=="?*", SYMLINK+="mapper/$env{DM_NAME}" # Avoid processing and scanning a DM device in the other (foreign) # rules if it is in suspended state. However, we still keep 'disk' # and 'DM subsystem' related rules enabled in this case. ENV{DM_SUSPENDED}=="1", ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}="1" GOTO="dm_end" LABEL="dm_disable" ENV{DM_UDEV_DISABLE_SUBSYSTEM_RULES_FLAG}="1" ENV{DM_UDEV_DISABLE_DISK_RULES_FLAG}="1" ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}="1" OPTIONS:="nowatch" LABEL="dm_end" 99-qemu-guest-agent.rules 0000644 00000000202 15154124753 0011250 0 ustar 00 SUBSYSTEM=="virtio-ports", ATTR{name}=="org.qemu.guest_agent.0", \ TAG+="systemd" ENV{SYSTEMD_WANTS}="qemu-guest-agent.service" 70-power-switch.rules 0000644 00000001070 15154124753 0010504 0 ustar 00 # SPDX-License-Identifier: LGPL-2.1+ # # This file is part of systemd. # # systemd is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation; either version 2.1 of the License, or # (at your option) any later version. ACTION=="remove", GOTO="power_switch_end" SUBSYSTEM=="input", KERNEL=="event*", ENV{ID_INPUT_SWITCH}=="1", TAG+="power-switch" SUBSYSTEM=="input", KERNEL=="event*", ENV{ID_INPUT_KEY}=="1", TAG+="power-switch" LABEL="power_switch_end" 50-udev-default.rules 0000644 00000007246 15154124754 0010450 0 ustar 00 # do not edit this file, it will be overwritten on update # run a command on remove events ACTION=="remove", ENV{REMOVE_CMD}!="", RUN+="$env{REMOVE_CMD}" ACTION=="remove", GOTO="default_end" SUBSYSTEM=="virtio-ports", KERNEL=="vport*", ATTR{name}=="?*", SYMLINK+="virtio-ports/$attr{name}" # select "system RTC" or just use the first one SUBSYSTEM=="rtc", ATTR{hctosys}=="1", SYMLINK+="rtc" SUBSYSTEM=="rtc", KERNEL=="rtc0", SYMLINK+="rtc", OPTIONS+="link_priority=-100" SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", IMPORT{builtin}="usb_id", IMPORT{builtin}="hwdb --subsystem=usb" ENV{MODALIAS}!="", IMPORT{builtin}="hwdb --subsystem=$env{SUBSYSTEM}" ACTION!="add", GOTO="default_end" SUBSYSTEM=="tty", KERNEL=="ptmx", GROUP="tty", MODE="0666" SUBSYSTEM=="tty", KERNEL=="tty", GROUP="tty", MODE="0666" SUBSYSTEM=="tty", KERNEL=="tty[0-9]*", GROUP="tty", MODE="0620" SUBSYSTEM=="tty", KERNEL=="sclp_line[0-9]*", GROUP="tty", MODE="0620" SUBSYSTEM=="tty", KERNEL=="ttysclp[0-9]*", GROUP="tty", MODE="0620" SUBSYSTEM=="tty", KERNEL=="3270/tty[0-9]*", GROUP="tty", MODE="0620" SUBSYSTEM=="vc", KERNEL=="vcs*|vcsa*", GROUP="tty" KERNEL=="tty[A-Z]*[0-9]|ttymxc[0-9]*|pppox[0-9]*|ircomm[0-9]*|noz[0-9]*|rfcomm[0-9]*", GROUP="dialout" SUBSYSTEM=="mem", KERNEL=="mem|kmem|port", GROUP="kmem", MODE="0640" SUBSYSTEM=="input", GROUP="input" SUBSYSTEM=="input", KERNEL=="js[0-9]*", MODE="0664" SUBSYSTEM=="video4linux", GROUP="video" SUBSYSTEM=="graphics", GROUP="video" SUBSYSTEM=="drm", KERNEL!="renderD*", GROUP="video" SUBSYSTEM=="dvb", GROUP="video" SUBSYSTEM=="media", GROUP="video" SUBSYSTEM=="cec", GROUP="video" SUBSYSTEM=="drm", KERNEL=="renderD*", GROUP="render", MODE="0666" SUBSYSTEM=="kfd", GROUP="render", MODE="0666" SUBSYSTEM=="sound", GROUP="audio", \ OPTIONS+="static_node=snd/seq", OPTIONS+="static_node=snd/timer" SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", MODE="0664" SUBSYSTEM=="firewire", ATTR{units}=="*0x00a02d:0x00010*", GROUP="video" SUBSYSTEM=="firewire", ATTR{units}=="*0x00b09d:0x00010*", GROUP="video" SUBSYSTEM=="firewire", ATTR{units}=="*0x00a02d:0x010001*", GROUP="video" SUBSYSTEM=="firewire", ATTR{units}=="*0x00a02d:0x014001*", GROUP="video" KERNEL=="parport[0-9]*", GROUP="lp" SUBSYSTEM=="printer", KERNEL=="lp*", GROUP="lp" SUBSYSTEM=="ppdev", GROUP="lp" KERNEL=="lp[0-9]*", GROUP="lp" KERNEL=="irlpt[0-9]*", GROUP="lp" SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ENV{ID_USB_INTERFACES}=="*:0701??:*", GROUP="lp" SUBSYSTEM=="block", GROUP="disk" SUBSYSTEM=="block", KERNEL=="sr[0-9]*", GROUP="cdrom" SUBSYSTEM=="scsi_generic", SUBSYSTEMS=="scsi", ATTRS{type}=="4|5", GROUP="cdrom" KERNEL=="sch[0-9]*", GROUP="cdrom" KERNEL=="pktcdvd[0-9]*", GROUP="cdrom" KERNEL=="pktcdvd", GROUP="cdrom" SUBSYSTEM=="scsi_generic|scsi_tape", SUBSYSTEMS=="scsi", ATTRS{type}=="1|8", GROUP="tape" SUBSYSTEM=="scsi_generic", SUBSYSTEMS=="scsi", ATTRS{type}=="0", GROUP="disk" KERNEL=="qft[0-9]*|nqft[0-9]*|zqft[0-9]*|nzqft[0-9]*|rawqft[0-9]*|nrawqft[0-9]*", GROUP="disk" KERNEL=="loop-control", GROUP="disk", OPTIONS+="static_node=loop-control" KERNEL=="btrfs-control", GROUP="disk" KERNEL=="rawctl", GROUP="disk" SUBSYSTEM=="raw", KERNEL=="raw[0-9]*", GROUP="disk" SUBSYSTEM=="aoe", GROUP="disk", MODE="0220" SUBSYSTEM=="aoe", KERNEL=="err", MODE="0440" KERNEL=="rfkill", MODE="0664" KERNEL=="tun", MODE="0666", OPTIONS+="static_node=net/tun" KERNEL=="fuse", MODE="0666", OPTIONS+="static_node=fuse" # The static_node is required on s390x and ppc (they are using MODULE_ALIAS) KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm" SUBSYSTEM=="ptp", ATTR{clock_name}=="KVM virtual PTP", SYMLINK += "ptp_kvm" SUBSYSTEM=="ptp", ATTR{clock_name}=="hyperv", SYMLINK += "ptp_hyperv" LABEL="default_end" 75-net-description.rules 0000644 00000000704 15154124754 0011171 0 ustar 00 # do not edit this file, it will be overwritten on update ACTION=="remove", GOTO="net_end" SUBSYSTEM!="net", GOTO="net_end" IMPORT{builtin}="net_id" SUBSYSTEMS=="usb", IMPORT{builtin}="usb_id", IMPORT{builtin}="hwdb --subsystem=usb" SUBSYSTEMS=="usb", GOTO="net_end" SUBSYSTEMS=="pci", ENV{ID_BUS}="pci", ENV{ID_VENDOR_ID}="$attr{vendor}", ENV{ID_MODEL_ID}="$attr{device}" SUBSYSTEMS=="pci", IMPORT{builtin}="hwdb --subsystem=pci" LABEL="net_end" 60-persistent-v4l.rules 0000644 00000001401 15154124754 0010752 0 ustar 00 # do not edit this file, it will be overwritten on update ACTION=="remove", GOTO="persistent_v4l_end" SUBSYSTEM!="video4linux", GOTO="persistent_v4l_end" ENV{MAJOR}=="", GOTO="persistent_v4l_end" IMPORT{program}="v4l_id $devnode" SUBSYSTEMS=="usb", IMPORT{builtin}="usb_id" KERNEL=="video*", ENV{ID_SERIAL}=="?*", SYMLINK+="v4l/by-id/$env{ID_BUS}-$env{ID_SERIAL}-video-index$attr{index}" # check for valid "index" number TEST!="index", GOTO="persistent_v4l_end" ATTR{index}!="?*", GOTO="persistent_v4l_end" IMPORT{builtin}="path_id" ENV{ID_PATH}=="?*", KERNEL=="video*|vbi*", SYMLINK+="v4l/by-path/$env{ID_PATH}-video-index$attr{index}" ENV{ID_PATH}=="?*", KERNEL=="audio*", SYMLINK+="v4l/by-path/$env{ID_PATH}-audio-index$attr{index}" LABEL="persistent_v4l_end" 60-drm.rules 0000644 00000000635 15154124754 0006641 0 ustar 00 # do not edit this file, it will be overwritten on update ACTION!="remove", SUBSYSTEM=="drm", SUBSYSTEMS=="pci|usb|platform", IMPORT{builtin}="path_id" # by-path ENV{ID_PATH}=="?*", KERNEL=="card*", SYMLINK+="dri/by-path/$env{ID_PATH}-card" ENV{ID_PATH}=="?*", KERNEL=="controlD*", SYMLINK+="dri/by-path/$env{ID_PATH}-control" ENV{ID_PATH}=="?*", KERNEL=="renderD*", SYMLINK+="dri/by-path/$env{ID_PATH}-render" 60-serial.rules 0000644 00000002246 15154124754 0007336 0 ustar 00 # do not edit this file, it will be overwritten on update ACTION=="remove", GOTO="serial_end" SUBSYSTEM!="tty", GOTO="serial_end" SUBSYSTEMS=="pci", ENV{ID_BUS}="pci", ENV{ID_VENDOR_ID}="$attr{vendor}", ENV{ID_MODEL_ID}="$attr{device}" SUBSYSTEMS=="pci", IMPORT{builtin}="hwdb --subsystem=pci" SUBSYSTEMS=="usb", IMPORT{builtin}="usb_id", IMPORT{builtin}="hwdb --subsystem=usb" # /dev/serial/by-path/, /dev/serial/by-id/ for USB devices KERNEL!="ttyUSB[0-9]*|ttyACM[0-9]*", GOTO="serial_end" SUBSYSTEMS=="usb-serial", ENV{.ID_PORT}="$attr{port_number}" IMPORT{builtin}="path_id" ENV{ID_PATH}=="?*", ENV{.ID_PORT}=="", SYMLINK+="serial/by-path/$env{ID_PATH}" ENV{ID_PATH}=="?*", ENV{.ID_PORT}=="?*", SYMLINK+="serial/by-path/$env{ID_PATH}-port$env{.ID_PORT}" IMPORT{builtin}="usb_id" ENV{ID_SERIAL}=="", GOTO="serial_end" SUBSYSTEMS=="usb", ENV{ID_USB_INTERFACE_NUM}="$attr{bInterfaceNumber}" ENV{ID_USB_INTERFACE_NUM}=="", GOTO="serial_end" ENV{.ID_PORT}=="", SYMLINK+="serial/by-id/$env{ID_BUS}-$env{ID_SERIAL}-if$env{ID_USB_INTERFACE_NUM}" ENV{.ID_PORT}=="?*", SYMLINK+="serial/by-id/$env{ID_BUS}-$env{ID_SERIAL}-if$env{ID_USB_INTERFACE_NUM}-port$env{.ID_PORT}" LABEL="serial_end" 60-sensor.rules 0000644 00000001327 15154124754 0007367 0 ustar 00 # do not edit this file, it will be overwritten on update ACTION=="remove", GOTO="sensor_end" # device matching the sensor's name and the machine's DMI data for IIO devices SUBSYSTEM=="iio", KERNEL=="iio*", SUBSYSTEMS=="usb|i2c", \ IMPORT{builtin}="hwdb 'sensor:modalias:$attr{modalias}:$attr{[dmi/id]modalias}'", \ GOTO="sensor_end" SUBSYSTEM=="input", ENV{ID_INPUT_ACCELEROMETER}=="1", SUBSYSTEMS=="acpi", \ IMPORT{builtin}="hwdb 'sensor:modalias:acpi:$attr{hid}:$attr{[dmi/id]modalias}'", \ GOTO="sensor_end" SUBSYSTEM=="input", ENV{ID_INPUT_ACCELEROMETER}=="1", SUBSYSTEMS=="platform", \ IMPORT{builtin}="hwdb 'sensor:modalias:platform:$id:$attr{[dmi/id]modalias}'", \ GOTO="sensor_end" LABEL="sensor_end" 90-wireshark-usbmon.rules 0000644 00000000060 15154124754 0011352 0 ustar 00 SUBSYSTEM=="usbmon", GROUP="usbmon", MODE="640" 60-block.rules 0000644 00000001162 15154124754 0007145 0 ustar 00 # do not edit this file, it will be overwritten on update # enable in-kernel media-presence polling ACTION=="add", SUBSYSTEM=="module", KERNEL=="block", ATTR{parameters/events_dfl_poll_msecs}=="0", \ ATTR{parameters/events_dfl_poll_msecs}="2000" # forward scsi device event to corresponding block device ACTION=="change", SUBSYSTEM=="scsi", ENV{DEVTYPE}=="scsi_device", TEST=="block", ATTR{block/*/uevent}="change" # watch metadata changes, caused by tools closing the device node which was opened for writing ACTION!="remove", SUBSYSTEM=="block", KERNEL=="loop*|nvme*|sd*|vd*|xvd*|pmem*|mmcblk*|dasd*", OPTIONS+="watch" 99-systemd.rules 0000644 00000010417 15154124754 0007562 0 ustar 00 # SPDX-License-Identifier: LGPL-2.1+ # # This file is part of systemd. # # systemd is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation; either version 2.1 of the License, or # (at your option) any later version. ACTION=="remove", GOTO="systemd_end" SUBSYSTEM=="tty", KERNEL=="tty[a-zA-Z]*|hvc*|xvc*|hvsi*|ttysclp*|sclp_line*|3270/tty[0-9]*", TAG+="systemd" KERNEL=="vport*", TAG+="systemd" SUBSYSTEM=="ubi", TAG+="systemd" SUBSYSTEM=="block", TAG+="systemd" SUBSYSTEM=="block", ACTION=="add", ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}=="1", ENV{SYSTEMD_READY}="0" # Ignore encrypted devices with no identified superblock on it, since # we are probably still calling mke2fs or mkswap on it. SUBSYSTEM=="block", ENV{DM_UUID}=="CRYPT-*", ENV{ID_PART_TABLE_TYPE}=="", ENV{ID_FS_USAGE}=="", ENV{SYSTEMD_READY}="0" # add symlink to GPT root disk SUBSYSTEM=="block", ENV{ID_PART_GPT_AUTO_ROOT}=="1", ENV{ID_FS_TYPE}!="crypto_LUKS", SYMLINK+="gpt-auto-root" SUBSYSTEM=="block", ENV{ID_PART_GPT_AUTO_ROOT}=="1", ENV{ID_FS_TYPE}=="crypto_LUKS", SYMLINK+="gpt-auto-root-luks" SUBSYSTEM=="block", ENV{DM_UUID}=="CRYPT-*", ENV{DM_NAME}=="root", SYMLINK+="gpt-auto-root" # Ignore raid devices that are not yet assembled and started SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="md*", TEST!="md/array_state", ENV{SYSTEMD_READY}="0" SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="md*", ATTR{md/array_state}=="|clear|inactive", ENV{SYSTEMD_READY}="0" # Ignore loop devices that don't have any file attached SUBSYSTEM=="block", KERNEL=="loop[0-9]*", ENV{DEVTYPE}=="disk", TEST!="loop/backing_file", ENV{SYSTEMD_READY}="0" # Ignore nbd devices until the PID file exists (which signals a connected device) SUBSYSTEM=="block", KERNEL=="nbd*", ENV{DEVTYPE}=="disk", TEST!="pid", ENV{SYSTEMD_READY}="0" # We need a hardware independent way to identify network devices. We # use the /sys/subsystem/ path for this. Kernel "bus" and "class" names # should be treated as one namespace, like udev handles it. This is mostly # just an identification string for systemd, so whether the path actually is # accessible or not does not matter as long as it is unique and in the # filesystem namespace. # # http://cgit.freedesktop.org/systemd/systemd/tree/src/libudev/libudev-enumerate.c#n955 SUBSYSTEM=="net", KERNEL!="lo", TAG+="systemd", ENV{SYSTEMD_ALIAS}+="/sys/subsystem/net/devices/$name" SUBSYSTEM=="bluetooth", TAG+="systemd", ENV{SYSTEMD_ALIAS}+="/sys/subsystem/bluetooth/devices/%k" SUBSYSTEM=="bluetooth", TAG+="systemd", ENV{SYSTEMD_WANTS}+="bluetooth.target" ENV{ID_SMARTCARD_READER}=="?*", TAG+="systemd", ENV{SYSTEMD_WANTS}+="smartcard.target" SUBSYSTEM=="sound", KERNEL=="card*", TAG+="systemd", ENV{SYSTEMD_WANTS}+="sound.target" SUBSYSTEM=="printer", TAG+="systemd", ENV{SYSTEMD_WANTS}+="printer.target" SUBSYSTEM=="usb", KERNEL=="lp*", TAG+="systemd", ENV{SYSTEMD_WANTS}+="printer.target" SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ENV{ID_USB_INTERFACES}=="*:0701??:*", TAG+="systemd", ENV{SYSTEMD_WANTS}+="printer.target" # Apply sysctl variables to network devices (and only to those) as they appear. ACTION=="add", SUBSYSTEM=="net", KERNEL!="lo", RUN+="/usr/lib/systemd/systemd-sysctl --prefix=/net/ipv4/conf/$name --prefix=/net/ipv4/neigh/$name --prefix=/net/ipv6/conf/$name --prefix=/net/ipv6/neigh/$name" # Pull in backlight save/restore for all backlight devices and # keyboard backlights SUBSYSTEM=="backlight", TAG+="systemd", IMPORT{builtin}="path_id", ENV{SYSTEMD_WANTS}+="systemd-backlight@backlight:$name.service" SUBSYSTEM=="leds", KERNEL=="*kbd_backlight", TAG+="systemd", IMPORT{builtin}="path_id", ENV{SYSTEMD_WANTS}+="systemd-backlight@leds:$name.service" # Pull in rfkill save/restore for all rfkill devices SUBSYSTEM=="rfkill", ENV{SYSTEMD_RFKILL}="1" SUBSYSTEM=="rfkill", IMPORT{builtin}="path_id" SUBSYSTEM=="misc", KERNEL=="rfkill", TAG+="systemd", ENV{SYSTEMD_WANTS}+="systemd-rfkill.socket" # Asynchronously mount file systems implemented by these modules as soon as they are loaded. SUBSYSTEM=="module", KERNEL=="fuse", TAG+="systemd", ENV{SYSTEMD_WANTS}+="sys-fs-fuse-connections.mount" SUBSYSTEM=="module", KERNEL=="configfs", TAG+="systemd", ENV{SYSTEMD_WANTS}+="sys-kernel-config.mount" LABEL="systemd_end" 80-drivers.rules 0000644 00000001147 15154124755 0007537 0 ustar 00 # do not edit this file, it will be overwritten on update ACTION!="add", GOTO="drivers_end" ENV{MODALIAS}=="?*", RUN{builtin}+="kmod load $env{MODALIAS}" SUBSYSTEM=="tifm", ENV{TIFM_CARD_TYPE}=="SD", RUN{builtin}+="kmod load tifm_sd" SUBSYSTEM=="tifm", ENV{TIFM_CARD_TYPE}=="MS", RUN{builtin}+="kmod load tifm_ms" SUBSYSTEM=="memstick", RUN{builtin}+="kmod load ms_block mspro_block" SUBSYSTEM=="i2o", RUN{builtin}+="kmod load i2o_block" SUBSYSTEM=="module", KERNEL=="parport_pc", RUN{builtin}+="kmod load ppdev" KERNEL=="mtd*ro", ENV{MTD_FTL}=="smartmedia", RUN{builtin}+="kmod load sm_ftl" LABEL="drivers_end" 70-nvmf-autoconnect.rules 0000644 00000002110 15154124755 0011335 0 ustar 00 # # nvmf-autoconnect.rules: # Handles udev events which invoke automatically scan via discovery # controller and connect to elements in the discovery log. # # # Events from persistent discovery controllers or nvme-fc transport events # NVME_AEN: # type 0x2 (NOTICE) info 0xf0 (DISCOVERY_LOG_CHANGE) log-page-id 0x70 (DISCOVERY_LOG_PAGE) ACTION=="change", SUBSYSTEM=="nvme", ENV{NVME_AEN}=="0x70f002",\ ENV{NVME_TRTYPE}=="*", ENV{NVME_TRADDR}=="*", \ ENV{NVME_TRSVCID}=="*", ENV{NVME_HOST_TRADDR}=="*", \ RUN+="/bin/systemctl --no-block start nvmf-connect@--device=$kernel\t--transport=$env{NVME_TRTYPE}\t--traddr=$env{NVME_TRADDR}\t--trsvcid=$env{NVME_TRSVCID}\t--host-traddr=$env{NVME_HOST_TRADDR}.service" # nvme-fc transport generated events (old-style for compatibility) ACTION=="change", SUBSYSTEM=="fc", ENV{FC_EVENT}=="nvmediscovery", \ ENV{NVMEFC_HOST_TRADDR}=="*", ENV{NVMEFC_TRADDR}=="*", \ RUN+="/bin/systemctl --no-block start nvmf-connect@--device=none\t--transport=fc\t--traddr=$env{NVMEFC_TRADDR}\t--trsvcid=none\t--host-traddr=$env{NVMEFC_HOST_TRADDR}.service" 98-kexec.rules 0000644 00000001267 15154124755 0007174 0 ustar 00 SUBSYSTEM=="cpu", ACTION=="add", GOTO="kdump_reload" SUBSYSTEM=="cpu", ACTION=="remove", GOTO="kdump_reload" SUBSYSTEM=="memory", ACTION=="online", GOTO="kdump_reload" SUBSYSTEM=="memory", ACTION=="offline", GOTO="kdump_reload" GOTO="kdump_reload_end" LABEL="kdump_reload" # If kdump is not loaded, calling kdump-udev-throttle will end up # doing nothing, but systemd-run will always generate extra logs for # each call, so trigger the kdump-udev-throttler only if kdump # service is active to avoid unnecessary logs RUN+="/bin/sh -c '/usr/bin/systemctl is-active kdump.service || exit 0; /usr/bin/systemd-run --quiet --no-block /usr/lib/udev/kdump-udev-throttler'" LABEL="kdump_reload_end" 60-input-id.rules 0000644 00000000432 15154124755 0007604 0 ustar 00 # do not edit this file, it will be overwritten on update ACTION=="remove", GOTO="id_input_end" SUBSYSTEM=="input", ENV{ID_INPUT}=="", IMPORT{builtin}="input_id" SUBSYSTEM=="input", IMPORT{builtin}="hwdb --subsystem=input --lookup-prefix=id-input:modalias:" LABEL="id_input_end" 70-uaccess.rules 0000644 00000005157 15154124755 0007513 0 ustar 00 # SPDX-License-Identifier: LGPL-2.1+ # # This file is part of systemd. # # systemd is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation; either version 2.1 of the License, or # (at your option) any later version. ACTION=="remove", GOTO="uaccess_end" ENV{MAJOR}=="", GOTO="uaccess_end" # PTP/MTP protocol devices, cameras, portable media players SUBSYSTEM=="usb", ENV{ID_USB_INTERFACES}=="*:060101:*", TAG+="uaccess" # Digicams with proprietary protocol ENV{ID_GPHOTO2}=="?*", TAG+="uaccess" # SCSI and USB scanners ENV{libsane_matched}=="yes", TAG+="uaccess" # HPLIP devices (necessary for ink level check and HP tool maintenance) ENV{ID_HPLIP}=="1", TAG+="uaccess" # optical drives SUBSYSTEM=="block", ENV{ID_CDROM}=="1", TAG+="uaccess" SUBSYSTEM=="scsi_generic", SUBSYSTEMS=="scsi", ATTRS{type}=="4|5", TAG+="uaccess" # Sound devices SUBSYSTEM=="sound", TAG+="uaccess", \ OPTIONS+="static_node=snd/timer", OPTIONS+="static_node=snd/seq" # ffado is an userspace driver for firewire sound cards SUBSYSTEM=="firewire", ENV{ID_FFADO}=="1", TAG+="uaccess" # Webcams, frame grabber, TV cards SUBSYSTEM=="video4linux", TAG+="uaccess" SUBSYSTEM=="dvb", TAG+="uaccess" # IIDC devices: industrial cameras and some webcams SUBSYSTEM=="firewire", ATTR{units}=="*0x00a02d:0x00010*", TAG+="uaccess" SUBSYSTEM=="firewire", ATTR{units}=="*0x00b09d:0x00010*", TAG+="uaccess" # AV/C devices: camcorders, set-top boxes, TV sets, audio devices, and more SUBSYSTEM=="firewire", ATTR{units}=="*0x00a02d:0x010001*", TAG+="uaccess" SUBSYSTEM=="firewire", ATTR{units}=="*0x00a02d:0x014001*", TAG+="uaccess" # DRI video devices SUBSYSTEM=="drm", KERNEL=="card*", TAG+="uaccess" # smart-card readers ENV{ID_SMARTCARD_READER}=="?*", TAG+="uaccess" # (USB) authentication devices ENV{ID_SECURITY_TOKEN}=="?*", TAG+="uaccess" # PDA devices ENV{ID_PDA}=="?*", TAG+="uaccess" # Programmable remote control ENV{ID_REMOTE_CONTROL}=="1", TAG+="uaccess" # joysticks SUBSYSTEM=="input", ENV{ID_INPUT_JOYSTICK}=="?*", TAG+="uaccess" # color measurement devices ENV{COLOR_MEASUREMENT_DEVICE}=="?*", TAG+="uaccess" # DDC/CI device, usually high-end monitors such as the DreamColor ENV{DDC_DEVICE}=="?*", TAG+="uaccess" # media player raw devices (for user-mode drivers, Android SDK, etc.) SUBSYSTEM=="usb", ENV{ID_MEDIA_PLAYER}=="?*", TAG+="uaccess" # software-defined radio communication devices ENV{ID_SOFTWARE_RADIO}=="?*", TAG+="uaccess" # 3D printers, CNC machines, laser cutters, 3D scanners, etc. ENV{ID_MAKER_TOOL}=="?*", TAG+="uaccess" LABEL="uaccess_end" 60-evdev.rules 0000644 00000001716 15154124755 0007172 0 ustar 00 # do not edit this file, it will be overwritten on update ACTION=="remove", GOTO="evdev_end" KERNEL!="event*", GOTO="evdev_end" # skip later rules when we find something for this input device IMPORT{builtin}="hwdb --subsystem=input --lookup-prefix=evdev:", \ RUN{builtin}+="keyboard", GOTO="evdev_end" # AT keyboard matching by the machine's DMI data DRIVERS=="atkbd", \ IMPORT{builtin}="hwdb 'evdev:atkbd:$attr{[dmi/id]modalias}'", \ RUN{builtin}+="keyboard", GOTO="evdev_end" # device matching the input device name + properties + the machine's DMI data KERNELS=="input*", IMPORT{builtin}="hwdb 'evdev:name:$attr{name}:phys:$attr{phys}:ev:$attr{capabilities/ev}:$attr{[dmi/id]modalias}'", \ RUN{builtin}+="keyboard", GOTO="evdev_end" # device matching the input device name and the machine's DMI data KERNELS=="input*", IMPORT{builtin}="hwdb 'evdev:name:$attr{name}:$attr{[dmi/id]modalias}'", \ RUN{builtin}+="keyboard", GOTO="evdev_end" LABEL="evdev_end" 71-nvmf-iopolicy-netapp.rules 0000644 00000000424 15154124755 0012136 0 ustar 00 # Enable round-robin for NetApp ONTAP and NetApp E-Series ACTION=="add", SUBSYSTEM=="nvme-subsystem", ATTR{model}=="NetApp ONTAP Controller", ATTR{iopolicy}="round-robin" ACTION=="add", SUBSYSTEM=="nvme-subsystem", ATTR{model}=="NetApp E-Series", ATTR{iopolicy}="round-robin" 75-probe_mtd.rules 0000644 00000000256 15154124755 0010040 0 ustar 00 # do not edit this file, it will be overwritten on update ACTION!="add", GOTO="mtd_probe_end" KERNEL=="mtd*ro", IMPORT{program}="mtd_probe $devnode" LABEL="mtd_probe_end" 64-btrfs.rules 0000644 00000001150 15154124755 0007175 0 ustar 00 # do not edit this file, it will be overwritten on update SUBSYSTEM!="block", GOTO="btrfs_end" ACTION=="remove", GOTO="btrfs_end" ENV{ID_FS_TYPE}!="btrfs", GOTO="btrfs_end" ENV{SYSTEMD_READY}=="0", GOTO="btrfs_end" # let the kernel know about this btrfs filesystem, and check if it is complete IMPORT{builtin}="btrfs ready $devnode" # mark the device as not ready to be used by the system ENV{ID_BTRFS_READY}=="0", ENV{SYSTEMD_READY}="0" # reconsider pending devices in case when multidevice volume awaits ENV{ID_BTRFS_READY}=="1", RUN+="/usr/bin/udevadm trigger -s block -p ID_BTRFS_READY=0" LABEL="btrfs_end" 60-persistent-storage.rules 0000644 00000014600 15154124756 0011720 0 ustar 00 # do not edit this file, it will be overwritten on update # persistent storage links: /dev/disk/{by-id,by-uuid,by-label,by-path} # scheme based on "Linux persistent device names", 2004, Hannes Reinecke <hare@suse.de> ACTION=="remove", GOTO="persistent_storage_end" ENV{UDEV_DISABLE_PERSISTENT_STORAGE_RULES_FLAG}=="1", GOTO="persistent_storage_end" SUBSYSTEM!="block", GOTO="persistent_storage_end" KERNEL!="loop*|mmcblk*[0-9]|msblk*[0-9]|mspblk*[0-9]|nvme*|sd*|sr*|vd*|xvd*|bcache*|cciss*|dasd*|ubd*|scm*|pmem*|nbd*", GOTO="persistent_storage_end" # ignore partitions that span the entire disk TEST=="whole_disk", GOTO="persistent_storage_end" # for partitions import parent information ENV{DEVTYPE}=="partition", IMPORT{parent}="ID_*" # NVMe KERNEL=="nvme*[0-9]n*[0-9]", ATTR{wwid}=="?*", SYMLINK+="disk/by-id/nvme-$attr{wwid}" KERNEL=="nvme*[0-9]n*[0-9]p*[0-9]", ENV{DEVTYPE}=="partition", ATTRS{wwid}=="?*", SYMLINK+="disk/by-id/nvme-$attr{wwid}-part%n" KERNEL=="nvme*[0-9]n*[0-9]", ENV{DEVTYPE}=="disk", ATTRS{serial}=="?*", ENV{ID_SERIAL_SHORT}="$attr{serial}" KERNEL=="nvme*[0-9]n*[0-9]", ENV{DEVTYPE}=="disk", ATTRS{wwid}=="?*", ENV{ID_WWN}="$attr{wwid}" KERNEL=="nvme*[0-9]n*[0-9]", ENV{DEVTYPE}=="disk", ATTRS{model}=="?*", ENV{ID_MODEL}="$attr{model}" KERNEL=="nvme*[0-9]n*[0-9]", ENV{DEVTYPE}=="disk", ENV{ID_MODEL}=="?*", ENV{ID_SERIAL_SHORT}=="?*", \ ENV{ID_SERIAL}="$env{ID_MODEL}_$env{ID_SERIAL_SHORT}", SYMLINK+="disk/by-id/nvme-$env{ID_SERIAL}" KERNEL=="nvme*[0-9]n*[0-9]p*[0-9]", ENV{DEVTYPE}=="partition", ATTRS{serial}=="?*", ENV{ID_SERIAL_SHORT}="$attr{serial}" KERNEL=="nvme*[0-9]n*[0-9]p*[0-9]", ENV{DEVTYPE}=="partition", ATTRS{model}=="?*", ENV{ID_MODEL}="$attr{model}" KERNEL=="nvme*[0-9]n*[0-9]p*[0-9]", ENV{DEVTYPE}=="partition", ENV{ID_MODEL}=="?*", ENV{ID_SERIAL_SHORT}=="?*", \ ENV{ID_SERIAL}="$env{ID_MODEL}_$env{ID_SERIAL_SHORT}", SYMLINK+="disk/by-id/nvme-$env{ID_SERIAL}-part%n" # virtio-blk KERNEL=="vd*[!0-9]", ATTRS{serial}=="?*", ENV{ID_SERIAL}="$attr{serial}", SYMLINK+="disk/by-id/virtio-$env{ID_SERIAL}" KERNEL=="vd*[0-9]", ATTRS{serial}=="?*", ENV{ID_SERIAL}="$attr{serial}", SYMLINK+="disk/by-id/virtio-$env{ID_SERIAL}-part%n" # ATA KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", SUBSYSTEMS=="scsi", ATTRS{vendor}=="ATA", IMPORT{program}="ata_id --export $devnode" # ATAPI devices (SPC-3 or later) KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", SUBSYSTEMS=="scsi", ATTRS{type}=="5", ATTRS{scsi_level}=="[6-9]*", IMPORT{program}="ata_id --export $devnode" # Run ata_id on non-removable USB Mass Storage (SATA/PATA disks in enclosures) KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", ATTR{removable}=="0", SUBSYSTEMS=="usb", IMPORT{program}="ata_id --export $devnode" # Fall back usb_id for USB devices KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", SUBSYSTEMS=="usb", IMPORT{builtin}="usb_id" # SCSI devices KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", IMPORT{program}="scsi_id --export --whitelisted -d $devnode", ENV{ID_BUS}="scsi" KERNEL=="cciss*", ENV{DEVTYPE}=="disk", ENV{ID_SERIAL}!="?*", IMPORT{program}="scsi_id --export --whitelisted -d $devnode", ENV{ID_BUS}="cciss" KERNEL=="sd*|sr*|cciss*", ENV{DEVTYPE}=="disk", ENV{ID_SERIAL}=="?*", SYMLINK+="disk/by-id/$env{ID_BUS}-$env{ID_SERIAL}" KERNEL=="sd*|cciss*", ENV{DEVTYPE}=="partition", ENV{ID_SERIAL}=="?*", SYMLINK+="disk/by-id/$env{ID_BUS}-$env{ID_SERIAL}-part%n" # FireWire KERNEL=="sd*[!0-9]|sr*", ATTRS{ieee1394_id}=="?*", SYMLINK+="disk/by-id/ieee1394-$attr{ieee1394_id}" KERNEL=="sd*[0-9]", ATTRS{ieee1394_id}=="?*", SYMLINK+="disk/by-id/ieee1394-$attr{ieee1394_id}-part%n" # MMC KERNEL=="mmcblk[0-9]", SUBSYSTEMS=="mmc", ATTRS{name}=="?*", ATTRS{serial}=="?*", \ ENV{ID_NAME}="$attr{name}", ENV{ID_SERIAL}="$attr{serial}", SYMLINK+="disk/by-id/mmc-$env{ID_NAME}_$env{ID_SERIAL}" KERNEL=="mmcblk[0-9]p[0-9]*", ENV{ID_NAME}=="?*", ENV{ID_SERIAL}=="?*", SYMLINK+="disk/by-id/mmc-$env{ID_NAME}_$env{ID_SERIAL}-part%n" # UBI-MTD SUBSYSTEM=="ubi", KERNEL=="ubi*_*", ATTRS{mtd_num}=="*", SYMLINK+="ubi_mtd%s{mtd_num}_%s{name}" # Memstick KERNEL=="msblk[0-9]|mspblk[0-9]", SUBSYSTEMS=="memstick", ATTRS{name}=="?*", ATTRS{serial}=="?*", \ ENV{ID_NAME}="$attr{name}", ENV{ID_SERIAL}="$attr{serial}", SYMLINK+="disk/by-id/memstick-$env{ID_NAME}_$env{ID_SERIAL}" KERNEL=="msblk[0-9]p[0-9]|mspblk[0-9]p[0-9]", ENV{ID_NAME}=="?*", ENV{ID_SERIAL}=="?*", SYMLINK+="disk/by-id/memstick-$env{ID_NAME}_$env{ID_SERIAL}-part%n" # by-path ENV{DEVTYPE}=="disk", DEVPATH!="*/virtual/*", IMPORT{builtin}="path_id" KERNEL=="mmcblk[0-9]boot[0-9]", ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="?*", SYMLINK+="disk/by-path/$env{ID_PATH}-boot%n" KERNEL!="mmcblk[0-9]boot[0-9]", ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="?*", SYMLINK+="disk/by-path/$env{ID_PATH}" ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="?*", SYMLINK+="disk/by-path/$env{ID_PATH}-part%n" # legacy virtio-pci by-path links (deprecated) KERNEL=="vd*[!0-9]", ENV{ID_PATH}=="pci-*", SYMLINK+="disk/by-path/virtio-$env{ID_PATH}" KERNEL=="vd*[0-9]", ENV{ID_PATH}=="pci-*", SYMLINK+="disk/by-path/virtio-$env{ID_PATH}-part%n" # probe filesystem metadata of optical drives which have a media inserted KERNEL=="sr*", ENV{DISK_EJECT_REQUEST}!="?*", ENV{ID_CDROM_MEDIA_TRACK_COUNT_DATA}=="?*", ENV{ID_CDROM_MEDIA_SESSION_LAST_OFFSET}=="?*", \ IMPORT{builtin}="blkid --offset=$env{ID_CDROM_MEDIA_SESSION_LAST_OFFSET}" # single-session CDs do not have ID_CDROM_MEDIA_SESSION_LAST_OFFSET KERNEL=="sr*", ENV{DISK_EJECT_REQUEST}!="?*", ENV{ID_CDROM_MEDIA_TRACK_COUNT_DATA}=="?*", ENV{ID_CDROM_MEDIA_SESSION_LAST_OFFSET}=="", \ IMPORT{builtin}="blkid --noraid" # probe filesystem metadata of disks KERNEL!="sr*", IMPORT{builtin}="blkid" # by-label/by-uuid links (filesystem metadata) ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{ID_FS_UUID_ENC}=="?*", SYMLINK+="disk/by-uuid/$env{ID_FS_UUID_ENC}" ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{ID_FS_LABEL_ENC}=="?*", SYMLINK+="disk/by-label/$env{ID_FS_LABEL_ENC}" # by-id (World Wide Name) ENV{DEVTYPE}=="disk", ENV{ID_WWN_WITH_EXTENSION}=="?*", SYMLINK+="disk/by-id/wwn-$env{ID_WWN_WITH_EXTENSION}" ENV{DEVTYPE}=="partition", ENV{ID_WWN_WITH_EXTENSION}=="?*", SYMLINK+="disk/by-id/wwn-$env{ID_WWN_WITH_EXTENSION}-part%n" # by-partlabel/by-partuuid links (partition metadata) ENV{ID_PART_ENTRY_UUID}=="?*", SYMLINK+="disk/by-partuuid/$env{ID_PART_ENTRY_UUID}" ENV{ID_PART_ENTRY_SCHEME}=="gpt", ENV{ID_PART_ENTRY_NAME}=="?*", SYMLINK+="disk/by-partlabel/$env{ID_PART_ENTRY_NAME}" LABEL="persistent_storage_end" 60-persistent-input.rules 0000644 00000005226 15154124756 0011417 0 ustar 00 # do not edit this file, it will be overwritten on update ACTION=="remove", GOTO="persistent_input_end" SUBSYSTEM!="input", GOTO="persistent_input_end" SUBSYSTEMS=="bluetooth", ENV{ID_BUS}="bluetooth", GOTO="persistent_input_end" # Bluetooth devices don't always have the bluetooth subsystem ATTRS{id/bustype}=="0005", ENV{ID_BUS}="bluetooth", GOTO="persistent_input_end" SUBSYSTEMS=="rmi4", ENV{ID_BUS}="rmi" SUBSYSTEMS=="serio", ENV{ID_BUS}="i8042" SUBSYSTEMS=="usb", ENV{ID_BUS}=="", IMPORT{builtin}="usb_id" # determine class name for persistent symlinks ENV{ID_INPUT_KEYBOARD}=="?*", ENV{.INPUT_CLASS}="kbd" ENV{ID_INPUT_MOUSE}=="?*", ENV{.INPUT_CLASS}="mouse" ENV{ID_INPUT_TOUCHPAD}=="?*", ENV{.INPUT_CLASS}="mouse" ENV{ID_INPUT_TABLET}=="?*", ENV{.INPUT_CLASS}="mouse" ENV{ID_INPUT_JOYSTICK}=="?*", ENV{.INPUT_CLASS}="joystick" DRIVERS=="pcspkr", ENV{.INPUT_CLASS}="spkr" ATTRS{name}=="*dvb*|*DVB*|* IR *", ENV{.INPUT_CLASS}="ir" # fill empty serial number ENV{.INPUT_CLASS}=="?*", ENV{ID_SERIAL}=="", ENV{ID_SERIAL}="noserial" # by-id links KERNEL=="mouse*|js*", ENV{ID_BUS}=="?*", ENV{.INPUT_CLASS}=="?*", ATTRS{bInterfaceNumber}=="|00", SYMLINK+="input/by-id/$env{ID_BUS}-$env{ID_SERIAL}-$env{.INPUT_CLASS}" KERNEL=="mouse*|js*", ENV{ID_BUS}=="?*", ENV{.INPUT_CLASS}=="?*", ATTRS{bInterfaceNumber}=="?*", ATTRS{bInterfaceNumber}!="00", SYMLINK+="input/by-id/$env{ID_BUS}-$env{ID_SERIAL}-if$attr{bInterfaceNumber}-$env{.INPUT_CLASS}" KERNEL=="event*", ENV{ID_BUS}=="?*", ENV{.INPUT_CLASS}=="?*", ATTRS{bInterfaceNumber}=="|00", SYMLINK+="input/by-id/$env{ID_BUS}-$env{ID_SERIAL}-event-$env{.INPUT_CLASS}" KERNEL=="event*", ENV{ID_BUS}=="?*", ENV{.INPUT_CLASS}=="?*", ATTRS{bInterfaceNumber}=="?*", ATTRS{bInterfaceNumber}!="00", SYMLINK+="input/by-id/$env{ID_BUS}-$env{ID_SERIAL}-if$attr{bInterfaceNumber}-event-$env{.INPUT_CLASS}" # allow empty class for USB devices, by appending the interface number SUBSYSTEMS=="usb", ENV{ID_BUS}=="?*", KERNEL=="event*", ENV{.INPUT_CLASS}=="", ATTRS{bInterfaceNumber}=="?*", \ SYMLINK+="input/by-id/$env{ID_BUS}-$env{ID_SERIAL}-event-if$attr{bInterfaceNumber}" # by-path SUBSYSTEMS=="pci|usb|platform|acpi", IMPORT{builtin}="path_id" ENV{ID_PATH}=="?*", KERNEL=="mouse*|js*", ENV{.INPUT_CLASS}=="?*", SYMLINK+="input/by-path/$env{ID_PATH}-$env{.INPUT_CLASS}" ENV{ID_PATH}=="?*", KERNEL=="event*", ENV{.INPUT_CLASS}=="?*", SYMLINK+="input/by-path/$env{ID_PATH}-event-$env{.INPUT_CLASS}" # allow empty class for platform and usb devices; platform supports only a single interface that way SUBSYSTEMS=="usb|platform", ENV{ID_PATH}=="?*", KERNEL=="event*", ENV{.INPUT_CLASS}=="", \ SYMLINK+="input/by-path/$env{ID_PATH}-event" LABEL="persistent_input_end" 60-tpm-udev.rules 0000644 00000000323 15154124756 0007614 0 ustar 00 # tpm devices can only be accessed by the tss user but the tss # group members can access tpmrm devices KERNEL=="tpm[0-9]*", MODE="0660", OWNER="tss" KERNEL=="tpmrm[0-9]*", MODE="0660", OWNER="tss", GROUP="tss" 80-net-setup-link.rules 0000644 00000000444 15154124756 0010740 0 ustar 00 # do not edit this file, it will be overwritten on update SUBSYSTEM!="net", GOTO="net_setup_link_end" IMPORT{builtin}="path_id" ACTION!="add", GOTO="net_setup_link_end" IMPORT{builtin}="net_setup_link" NAME=="", ENV{ID_NET_NAME}!="", NAME="$env{ID_NET_NAME}" LABEL="net_setup_link_end" 68-del-part-nodes.rules 0000644 00000002166 15154124756 0010710 0 ustar 00 # These rules can delete partitions devnodes for slave devices # for certain aggregate devices such as multipath. # This is desirable to avoid confusion and keep the number # of device nodes and symlinks within limits. # # This is done only once on the first "add" or "change" event for # any given device. # # To suppress this, use the kernel parameter "dont_del_part_nodes", # or create an udev rule file that sets ENV{DONT_DEL_PART_NODES}="1". SUBSYSTEM!="block", GOTO="end_del_part_nodes" KERNEL!="sd*|dasd*", GOTO="end_del_part_nodes" ACTION!="add|change", GOTO="end_del_part_nodes" ENV{DEVTYPE}=="partition", GOTO="end_del_part_nodes" IMPORT{cmdline}="dont_del_part_nodes" ENV{dont_del_part_nodes}=="1", GOTO="end_del_part_nodes" ENV{DONT_DEL_PART_NODES}=="1", GOTO="end_del_part_nodes" # dm-multipath ENV{DM_MULTIPATH_DEVICE_PATH}=="1", GOTO="del_part_nodes" # Other aggregate device types can be added here. GOTO="end_del_part_nodes" LABEL="del_part_nodes" IMPORT{db}="DM_DEL_PART_NODES" ENV{DM_DEL_PART_NODES}!="1", ENV{DM_DEL_PART_NODES}="1", \ RUN+="/usr/sbin/partx -d --nr 1-1024 $env{DEVNAME}" LABEL="end_del_part_nodes" 80-libinput-device-groups.rules 0000644 00000000323 15154124756 0012455 0 ustar 00 ACTION!="add|change", GOTO="libinput_device_group_end" KERNEL!="event[0-9]*", GOTO="libinput_device_group_end" ATTRS{phys}=="?*", IMPORT{program}="libinput-device-group %S%p" LABEL="libinput_device_group_end" 40-elevator.rules 0000644 00000001330 15154124756 0007671 0 ustar 00 # We aren't adding devices skip the elevator check ACTION!="add", GOTO="sched_out" SUBSYSTEM!="block", GOTO="sched_out" ENV{DEVTYPE}!="disk", GOTO="sched_out" # Technically, dm-multipath can be configured to use an I/O scheduler. # However, there are races between the 'add' uevent and the linking in # of the queue/scheduler sysfs file. For now, just skip dm- devices. KERNEL=="dm-*|md*", GOTO="sched_out" # Skip bio-based devices, which don't support an I/O scheduler. ATTR{queue/scheduler}=="none", GOTO="sched_out" # If elevator= is specified on the kernel command line, change the # scheduler to the one specified. IMPORT{cmdline}="elevator" ENV{elevator}!="", ATTR{queue/scheduler}="$env{elevator}" LABEL="sched_out"