From 1859f8ee3a601934183599955fd6b9be711d3f34 Mon Sep 17 00:00:00 2001 From: chenjiayi Date: Tue, 26 Dec 2023 20:54:34 +0800 Subject: [PATCH 01/10] fix(libudev): replenish version information of udev_device_new_from_devnum The version information of udev_device_new_from_devnum was forgotten by mistake. --- exts/libudev/build.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/exts/libudev/build.rs b/exts/libudev/build.rs index e28ed7fa..e49ff26b 100644 --- a/exts/libudev/build.rs +++ b/exts/libudev/build.rs @@ -41,7 +41,7 @@ fn main() { // "udev_device_get_udev", // "udev_device_get_usec_since_initialized", "udev_device_has_tag", - // "udev_device_new_from_devnum", + "udev_device_new_from_devnum", "udev_device_new_from_environment", "udev_device_new_from_subsystem_sysname", "udev_device_new_from_syspath", -- Gitee From 1674ffc6ea6aaaa9867dc739f0229349061bb7c0 Mon Sep 17 00:00:00 2001 From: chenjiayi Date: Mon, 1 Jan 2024 13:52:00 +0800 Subject: [PATCH 02/10] fix(libudev): avoid hard-coded absolute path of libudev.sym Previously the path of libudev.sym is hard-encoded, which makes it fail to build if the sysmaster project locates in different path. --- exts/libudev/build.rs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/exts/libudev/build.rs b/exts/libudev/build.rs index e49ff26b..f941e902 100644 --- a/exts/libudev/build.rs +++ b/exts/libudev/build.rs @@ -16,6 +16,8 @@ //! Because rustc will append rust native version script, 'ld' is unavailable. Instead, //! we should use 'lld' linker of llvm, as it support multiple declarations of version scripts. +use std::env; + fn main() { let symbols = [ "udev_device_get_action", @@ -112,8 +114,12 @@ fn main() { // "udev_device_get_current_tags_list_entry", ]; + let current_dir = env::current_dir().unwrap(); println!("cargo:rustc-cdylib-link-arg=-fuse-ld=lld"); - println!("cargo:rustc-link-arg=-Wl,--version-script=/root/sysmaster/exts/libudev/libudev.sym"); + println!( + "cargo:rustc-link-arg=-Wl,--version-script={}/libudev.sym", + current_dir.display() + ); for s in symbols { println!("cargo:rustc-link-arg=-Wl,--defsym={}={}_impl", s, s); -- Gitee From 63e0507852998d8aa6da14406944727538e3e1e3 Mon Sep 17 00:00:00 2001 From: chenjiayi Date: Mon, 1 Jan 2024 14:05:19 +0800 Subject: [PATCH 03/10] fix(devmaster): load rules from all directories before sorting In initrd, rules are located in different directories. Udev will load all rules together before sorting, but devmaster does not previously. This makes devmaster have inconsistent rules processing order with udev. This patch unifies the behavior of devmaster and udev. --- exts/devmaster/src/lib/rules/rules_load.rs | 30 ++++++++++++++-------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/exts/devmaster/src/lib/rules/rules_load.rs b/exts/devmaster/src/lib/rules/rules_load.rs index 49da2d63..83070553 100644 --- a/exts/devmaster/src/lib/rules/rules_load.rs +++ b/exts/devmaster/src/lib/rules/rules_load.rs @@ -23,6 +23,7 @@ use basic::IN_SET; use nix::unistd::{Group, User}; use std::fs::File; use std::io::{BufRead, BufReader}; +use std::path::PathBuf; trait Location { fn location(&self, context: &(u32, String, String)) -> String; @@ -62,6 +63,8 @@ impl Rules { /// enumerate and parse all rule files under rule directories pub(crate) fn parse_rules(rules: Arc>) { let dirs = rules.as_ref().read().unwrap().dirs.clone(); + + let mut files: Vec = vec![]; for dir in dirs { let dir_path = std::path::Path::new(&dir); if !dir_path.exists() || !dir_path.is_dir() { @@ -69,8 +72,6 @@ impl Rules { continue; } - let mut files: Vec = vec![]; - for file in dir_path.read_dir().unwrap() { if file.is_err() { log::warn!( @@ -81,19 +82,28 @@ impl Rules { continue; } let buf = file.unwrap().path(); - let de = buf.as_os_str().to_str().unwrap(); - if !de.ends_with(".rules") { - log::warn!("Ignore file not ending with rules: {}", de); + if !buf + .file_name() + .unwrap_or_default() + .to_str() + .unwrap_or_default() + .ends_with(".rules") + { + log::warn!("Ignore file not ending with .rules: {:?}", buf); continue; } - files.push(de.to_string()); + files.push(buf); } + } - files.sort(); + files.sort_by(|a, b| { + a.file_name() + .unwrap_or_default() + .cmp(b.file_name().unwrap_or_default()) + }); - for f in files { - Self::parse_file(rules.clone(), f); - } + for f in files { + Self::parse_file(rules.clone(), f.to_str().unwrap().to_string()); } } -- Gitee From e4201ed8dc910eaa4cb0a45ca74dc858fbfb9b74 Mon Sep 17 00:00:00 2001 From: chenjiayi Date: Mon, 1 Jan 2024 14:50:21 +0800 Subject: [PATCH 04/10] fix(device): ignore error when database file does not exist If database file does not exist, ignore the error. Otherwise the error will lead to devmaster failure on dealing with uevent. --- libs/device/src/device.rs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/libs/device/src/device.rs b/libs/device/src/device.rs index acff9f39..f6847a74 100644 --- a/libs/device/src/device.rs +++ b/libs/device/src/device.rs @@ -1458,9 +1458,14 @@ impl Device { let db_path = format!("{}/{}/{}", self.base_path.borrow(), DB_BASE_DIR, id); if !has_info && *self.devnum.borrow() == 0 && *self.ifindex.borrow() == 0 { - unlink(db_path.as_str()).context(Nix { + if let Err(e) = unlink(db_path.as_str()).context(Nix { msg: format!("update_db failed: can't unlink db '{}'", db_path), - })?; + }) { + if e.get_errno() != nix::errno::Errno::ENOENT { + return Err(e); + } + } + return Ok(()); } -- Gitee From 31f1b6b6a1f6550ec28da25d14dbfdaa1ab69e7a Mon Sep 17 00:00:00 2001 From: chenjiayi Date: Mon, 1 Jan 2024 19:21:07 +0800 Subject: [PATCH 05/10] fix(devmaster): append udev rules directories to default configuration file --- exts/devmaster/config/config.toml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/exts/devmaster/config/config.toml b/exts/devmaster/config/config.toml index 8685e072..ba5ac05a 100644 --- a/exts/devmaster/config/config.toml +++ b/exts/devmaster/config/config.toml @@ -5,7 +5,12 @@ log_level = "error" # Support multiple rules directories. -rules_d = ["/etc/devmaster/rules.d", "/lib/devmaster/rules.d"] +rules_d = [ + "/etc/udev/rules.d", + "/lib/udev/rules.d", + "/etc/devmaster/rules.d", + "/lib/devmaster/rules.d", +] # Support multiple network interface configuration directories. network_d = ["/etc/devmaster/network.d"] -- Gitee From 6408c5b732250fd4f700f349d63fc5b08bb238a7 Mon Sep 17 00:00:00 2001 From: chenjiayi Date: Mon, 1 Jan 2024 19:26:23 +0800 Subject: [PATCH 06/10] docs(devmaster): remove redundant rules of devmaster Let devmaster use rules of udev directly, rather than install its own rules. --- .../install_devmaster.sh" | 4 - .../rules.d/01-md-raid-creating.rules" | 7 - .../rules.d/10-dm.rules" | 146 -------------- .../rules.d/11-dm-lvm.rules" | 48 ----- .../rules.d/11-dm-mpath.rules" | 111 ----------- .../rules.d/11-dm-parts.rules" | 39 ---- .../rules.d/13-dm-disk.rules" | 38 ---- .../rules.d/40-elevator.rules" | 20 -- .../rules.d/40-openEuler.rules" | 45 ----- .../rules.d/50-udev-default.rules" | 122 ------------ .../rules.d/60-autosuspend.rules" | 22 --- .../rules.d/60-block.rules" | 13 -- .../rules.d/60-cdrom_id.rules" | 29 --- .../rules.d/60-drm.rules" | 8 - .../rules.d/60-evdev.rules" | 30 --- .../rules.d/60-fido-id.rules" | 14 -- .../rules.d/60-infiniband.rules" | 12 -- .../rules.d/60-input-id.rules" | 8 - .../rules.d/60-net.rules" | 1 - .../rules.d/60-persistent-alsa.rules" | 14 -- .../rules.d/60-persistent-input.rules" | 42 ---- .../rules.d/60-persistent-storage-tape.rules" | 36 ---- .../rules.d/60-persistent-storage.rules" | 142 ------------- .../rules.d/60-persistent-v4l.rules" | 20 -- .../rules.d/60-raw.rules" | 1 - .../rules.d/60-rdma-ndd.rules" | 3 - .../rules.d/60-rdma-persistent-naming.rules" | 32 --- .../rules.d/60-sensor.rules" | 34 ---- .../rules.d/60-serial.rules" | 26 --- .../rules.d/60-srp_daemon.rules" | 1 - .../rules.d/62-multipath.rules" | 92 --------- .../rules.d/63-md-raid-arrays.rules" | 41 ---- .../rules.d/64-btrfs-dm.rules" | 10 - .../rules.d/64-btrfs.rules" | 17 -- .../rules.d/64-md-raid-assembly.rules" | 38 ---- .../rules.d/66-kpartx.rules" | 41 ---- .../rules.d/68-del-part-nodes.rules" | 33 ---- .../rules.d/69-dm-lvm.rules" | 83 -------- .../69-md-clustered-confirm-device.rules" | 21 -- .../rules.d/70-camera.rules" | 9 - .../rules.d/70-joystick.rules" | 12 -- .../rules.d/70-memory.rules" | 8 - .../rules.d/70-mouse.rules" | 18 -- .../rules.d/70-power-switch.rules" | 6 - .../rules.d/70-touchpad.rules" | 13 -- .../rules.d/70-uaccess.rules" | 83 -------- .../rules.d/71-seat.rules" | 70 ------- .../rules.d/73-idrac.rules" | 6 - .../rules.d/73-seat-late.rules" | 9 - .../rules.d/75-net-description.rules" | 14 -- .../rules.d/75-probe_mtd.rules" | 7 - .../rules.d/75-rdma-description.rules" | 43 ---- .../rules.d/78-sound-card.rules" | 96 --------- .../rules.d/80-drivers.rules" | 13 -- .../rules.d/80-net-setup-link.rules" | 13 -- .../rules.d/80-tpm-udev.rules" | 4 - .../rules.d/80-udisks2.rules" | 187 ------------------ .../rules.d/81-net-dhcp.rules" | 14 -- .../rules.d/84-nm-drivers.rules" | 12 -- .../rules.d/85-nm-unmanaged.rules" | 34 ---- .../rules.d/90-iprutils.rules" | 1 - .../rules.d/90-iwpmd.rules" | 1 - .../rules.d/90-nm-thunderbolt.rules" | 13 -- .../rules.d/90-rdma-hw-modules.rules" | 46 ----- .../rules.d/90-rdma-ulp-modules.rules" | 11 -- .../rules.d/90-rdma-umad.rules" | 1 - .../rules.d/90-vconsole.rules" | 3 - .../rules.d/91-drm-modeset.rules" | 1 - .../rules.d/95-dm-notify.rules" | 8 - .../rules.d/96-e2scrub.rules" | 2 - .../rules.d/98-kexec.rules" | 18 -- .../rules.d/99-systemd.rules" | 75 ------- 72 files changed, 2295 deletions(-) delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/01-md-raid-creating.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/10-dm.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/11-dm-lvm.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/11-dm-mpath.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/11-dm-parts.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/13-dm-disk.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/40-elevator.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/40-openEuler.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/50-udev-default.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-autosuspend.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-block.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-cdrom_id.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-drm.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-evdev.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-fido-id.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-infiniband.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-input-id.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-net.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-persistent-alsa.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-persistent-input.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-persistent-storage-tape.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-persistent-storage.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-persistent-v4l.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-raw.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-rdma-ndd.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-rdma-persistent-naming.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-sensor.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-serial.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-srp_daemon.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/62-multipath.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/63-md-raid-arrays.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/64-btrfs-dm.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/64-btrfs.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/64-md-raid-assembly.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/66-kpartx.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/68-del-part-nodes.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/69-dm-lvm.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/69-md-clustered-confirm-device.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/70-camera.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/70-joystick.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/70-memory.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/70-mouse.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/70-power-switch.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/70-touchpad.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/70-uaccess.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/71-seat.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/73-idrac.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/73-seat-late.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/75-net-description.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/75-probe_mtd.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/75-rdma-description.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/78-sound-card.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/80-drivers.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/80-net-setup-link.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/80-tpm-udev.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/80-udisks2.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/81-net-dhcp.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/84-nm-drivers.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/85-nm-unmanaged.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/90-iprutils.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/90-iwpmd.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/90-nm-thunderbolt.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/90-rdma-hw-modules.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/90-rdma-ulp-modules.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/90-rdma-umad.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/90-vconsole.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/91-drm-modeset.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/95-dm-notify.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/96-e2scrub.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/98-kexec.rules" delete mode 100644 "docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/99-systemd.rules" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/install_devmaster.sh" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/install_devmaster.sh" index d9bed1ab..74b83755 100644 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/install_devmaster.sh" +++ "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/install_devmaster.sh" @@ -9,7 +9,6 @@ tools=(ata_id) run_with_devmaster=${0%/*} service_dir=${run_with_devmaster}/service -lib_rules_dir=${run_with_devmaster}/rules.d etc_dir=exts/devmaster/config etc_rules_dir=${etc_dir}/rules.d @@ -39,9 +38,6 @@ install -Dm0640 -t ${etc_conf_install_dir} ${etc_dir}/config.toml || exit 1 install -Dm0640 -t ${etc_netconf_install_dir} ${etc_netconf_dir}/*.link || exit 1 install -Dm0640 -t ${etc_rules_install_dir} ${etc_rules_dir}/*.rules || exit 1 -# Install rules under /lib/devmaster. -install -Dm0640 -t ${lib_rules_install_dir} ${lib_rules_dir}/*.rules || exit 1 - # Install services. install -Dm0640 -t ${service_install_dir} ${service_dir}/*.service || exit 1 diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/01-md-raid-creating.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/01-md-raid-creating.rules" deleted file mode 100644 index 9bef8d11..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/01-md-raid-creating.rules" +++ /dev/null @@ -1,7 +0,0 @@ -# do not edit this file, it will be overwritten on update -# While mdadm is creating an array, it creates a file -# /run/mdadm/creating-mdXXX. If that file exists, then -# the array is not "ready" and we should make sure the -# content is ignored. - -KERNEL=="md*", TEST=="/run/mdadm/creating-$kernel", ENV{SYSTEMD_READY}="0" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/10-dm.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/10-dm.rules" deleted file mode 100644 index 367bfd98..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/10-dm.rules" +++ /dev/null @@ -1,146 +0,0 @@ -# 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-.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//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 > /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" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/11-dm-lvm.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/11-dm-lvm.rules" deleted file mode 100644 index f6b26ac6..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/11-dm-lvm.rules" +++ /dev/null @@ -1,48 +0,0 @@ -# Udev rules for LVM. -# -# These rules create symlinks for LVM logical volumes in -# /dev/VG directory (VG is an actual VG name). Some udev -# environment variables are set (they can be used in later -# rules as well): -# DM_LV_NAME - logical volume name -# DM_VG_NAME - volume group name -# DM_LV_LAYER - logical volume layer (blank if not set) - -# "add" event is processed on coldplug only! -ACTION!="add|change", GOTO="lvm_end" -ENV{DM_UDEV_RULES_VSN}!="?*", GOTO="lvm_end" -ENV{DM_UUID}!="LVM-?*", GOTO="lvm_end" - -# Use DM name and split it up into its VG/LV/layer constituents. -IMPORT{program}=="/usr/sbin/dmsetup splitname --nameprefixes --noheadings --rows $env{DM_NAME}" - -# DM_SUBSYSTEM_UDEV_FLAG0 is the 'NOSCAN' flag for LVM subsystem. -# This flag is used to temporarily disable selected rules to prevent any -# processing or scanning done on the LVM volume before LVM has any chance -# to zero any stale metadata found within the LV data area. Such stale -# metadata could cause false claim of the LV device, keeping it open etc. -# -# If the NOSCAN flag is present, backup selected existing flags used to -# disable rules, then set them firmly so those selected rules are surely skipped. -# Restore these flags once the NOSCAN flag is dropped (which is normally any -# uevent that follows for this LV, even an artificially generated one). -ENV{DM_SUBSYSTEM_UDEV_FLAG0}=="1", ENV{DM_NOSCAN}="1", ENV{DM_DISABLE_OTHER_RULES_FLAG_OLD}="$env{DM_UDEV_DISABLE_OTHER_RULES_FLAG}", ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}="1" -ENV{DM_SUBSYSTEM_UDEV_FLAG0}!="1", IMPORT{db}=="DM_NOSCAN", IMPORT{db}=="DM_DISABLE_OTHER_RULES_FLAG_OLD" -ENV{DM_SUBSYSTEM_UDEV_FLAG0}!="1", ENV{DM_NOSCAN}=="1", ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}="$env{DM_DISABLE_OTHER_RULES_FLAG_OLD}", \ - ENV{DM_DISABLE_OTHER_RULES_FLAG_OLD}="", ENV{DM_NOSCAN}="" - -ENV{DM_UDEV_DISABLE_SUBSYSTEM_RULES_FLAG}=="1", GOTO="lvm_end" - -# Do not create symlinks for inappropriate subdevices. -ENV{DM_LV_NAME}=="pvmove?*|?*_vorigin", GOTO="lvm_disable" -ENV{DM_LV_LAYER}=="?*", GOTO="lvm_disable" - -# Create symlinks for top-level devices only. -ENV{DM_VG_NAME}=="?*", ENV{DM_LV_NAME}=="?*", SYMLINK+="$env{DM_VG_NAME}/$env{DM_LV_NAME}", GOTO="lvm_end" - -LABEL="lvm_disable" -ENV{DM_UDEV_DISABLE_DISK_RULES_FLAG}="1" -ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}="1" -OPTIONS:="nowatch" - -LABEL="lvm_end" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/11-dm-mpath.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/11-dm-mpath.rules" deleted file mode 100644 index b35cc9ec..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/11-dm-mpath.rules" +++ /dev/null @@ -1,111 +0,0 @@ -ACTION!="add|change", GOTO="mpath_end" -ENV{DM_UDEV_RULES_VSN}!="?*", GOTO="mpath_end" -ENV{DM_UUID}!="mpath-?*", GOTO="mpath_end" - -IMPORT{db}=="DM_DISABLE_OTHER_RULES_FLAG_OLD" -IMPORT{db}=="MPATH_DEVICE_READY" - -# If this uevent didn't come from dm, don't try to update the -# device state -ENV{DM_COOKIE}!="?*", ENV{DM_ACTION}!="PATH_*", IMPORT{db}=="DM_UDEV_DISABLE_OTHER_RULES_FLAG", IMPORT{db}=="DM_NOSCAN", GOTO="scan_import" - -ENV{.MPATH_DEVICE_READY_OLD}="$env{MPATH_DEVICE_READY}" - -# multipath sets DM_SUBSYSTEM_UDEV_FLAG2 when it reloads a -# table with no active devices. If this happens, mark the -# device not ready -ENV{DM_SUBSYSTEM_UDEV_FLAG2}=="1", ENV{MPATH_DEVICE_READY}="0",\ - GOTO="mpath_action" - -# If the last path has failed mark the device not ready -# Note that DM_NR_VALID_PATHS is only set for PATH_FAILED|PATH_REINSTATED -# events. -# This may not be reliable, as events aren't necessarily received in order. -ENV{DM_NR_VALID_PATHS}=="0", ENV{MPATH_DEVICE_READY}="0", GOTO="mpath_action" - -ENV{MPATH_SBIN_PATH}="/sbin" -TEST!="$env{MPATH_SBIN_PATH}/multipath", ENV{MPATH_SBIN_PATH}="/usr/sbin" - -# Don't run multipath -U during "coldplug" after switching root, -# because paths are just being added to the udev db. -ACTION=="add", ENV{.MPATH_DEVICE_READY_OLD}=="1", GOTO="paths_ok" - -# Check the map state directly with multipath -U. -# This doesn't attempt I/O on the device. -PROGRAM=="$env{MPATH_SBIN_PATH}/multipath -U -v1 %k", GOTO="paths_ok" -ENV{MPATH_DEVICE_READY}="0", GOTO="mpath_action" -LABEL="paths_ok" - -# Don't mark a device ready on a PATH_FAILED event. even if -# DM_NR_VALID_PATHS is greater than 0. Just keep the existing -# value -ENV{DM_ACTION}=="PATH_FAILED", GOTO="mpath_action" - -# This event is either a PATH_REINSTATED or a table reload where -# there are active paths. Mark the device ready -ENV{MPATH_DEVICE_READY}="1" - -LABEL="mpath_action" -# DM_SUBSYSTEM_UDEV_FLAG0 is the "RELOAD" flag for multipath subsystem. -# Drop the DM_ACTIVATION flag here as mpath reloads tables if any of its -# paths are lost/recovered. For any stack above the mpath device, this is not -# something that should be reacted upon since it would be useless extra work. -# It's exactly mpath's job to provide *seamless* device access to any of the -# paths that are available underneath. -ENV{DM_SUBSYSTEM_UDEV_FLAG0}=="1", \ - ENV{DM_ACTIVATION}="0", ENV{MPATH_UNCHANGED}="1" - -# For path failed or reinstated events, unset DM_ACTIVATION. -# This is similar to the DM_SUBSYSTEM_UDEV_FLAG0 case above. -ENV{DM_ACTION}=="PATH_FAILED|PATH_REINSTATED", \ - ENV{DM_ACTIVATION}="0", ENV{MPATH_UNCHANGED}="1" - -# Do not initiate scanning if no path is available, -# otherwise there would be a hang or IO error on access. -# We'd like to avoid this, especially within udev processing. -ENV{MPATH_DEVICE_READY}=="0", ENV{DM_NOSCAN}="1" - -# Also skip all foreign rules if no path is available. -# Remember the original value of DM_DISABLE_OTHER_RULES_FLAG -# and restore it back once we have at least one path available. -ENV{MPATH_DEVICE_READY}=="0", ENV{.MPATH_DEVICE_READY_OLD}=="1",\ - ENV{DM_DISABLE_OTHER_RULES_FLAG_OLD}=="",\ - ENV{DM_DISABLE_OTHER_RULES_FLAG_OLD}="$env{DM_UDEV_DISABLE_OTHER_RULES_FLAG}" -ENV{MPATH_DEVICE_READY}=="0", ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}="1" -ENV{MPATH_DEVICE_READY}!="0", ENV{.MPATH_DEVICE_READY_OLD}=="0",\ - ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}="$env{DM_DISABLE_OTHER_RULES_FLAG_OLD}",\ - ENV{DM_DISABLE_OTHER_RULES_FLAG_OLD}="",\ - ENV{DM_ACTIVATION}="1", ENV{MPATH_UNCHANGED}="0" - -# The code to check multipath state ends here. We need to set -# properties and symlinks regardless whether the map is usable or -# not. If symlinks get lost, systemd may auto-unmount file systems. - -LABEL="scan_import" -ENV{DM_NOSCAN}!="1", GOTO="import_end" -IMPORT{db}=="ID_FS_TYPE" -IMPORT{db}=="ID_FS_USAGE" -IMPORT{db}=="ID_FS_UUID" -IMPORT{db}=="ID_FS_UUID_ENC" -IMPORT{db}=="ID_FS_LABEL" -IMPORT{db}=="ID_FS_LABEL_ENC" -IMPORT{db}=="ID_FS_VERSION" - -LABEL="import_end" - -# Multipath maps should take precedence over their members. -ENV{DM_UDEV_LOW_PRIORITY_FLAG}!="1", OPTIONS+="link_priority=50" - -# Set some additional symlinks that typically exist for mpath -# path members, too, and should be overridden. - -# kpartx_id is very robust, it works for suspended maps and maps -# with 0 dependencies. It sets DM_TYPE, DM_PART, DM_WWN -TEST=="/usr/lib/udev/kpartx_id", \ - IMPORT{program}=="kpartx_id %M %m $env{DM_UUID}" - -ENV{DM_TYPE}=="?*", ENV{DM_SERIAL}=="?*", \ - SYMLINK+="disk/by-id/$env{DM_TYPE}-$env{DM_SERIAL}" -ENV{DM_WWN}=="?*", SYMLINK+="disk/by-id/wwn-$env{DM_WWN}" - -LABEL="mpath_end" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/11-dm-parts.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/11-dm-parts.rules" deleted file mode 100644 index 8a082170..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/11-dm-parts.rules" +++ /dev/null @@ -1,39 +0,0 @@ -# Rules for partitions created by kpartx - -KERNEL!="dm-*", GOTO="dm_parts_end" -ACTION!="add|change", GOTO="dm_parts_end" -ENV{DM_UUID}!="part[0-9]*", GOTO="dm_parts_end" - -# We must take care that symlinks don't get lost, -# even if blkid fails in 13-dm-disk.rules later. -# -# Fixme: we have currently no way to avoid calling blkid on -# partitions of broken mpath maps such as DM_NOSCAN. -# But when partition devices appear, kpartx has likely read -# the partition table shortly before, so odds are not bad -# that blkid will also succeed. - -IMPORT{db}=="ID_FS_USAGE" -IMPORT{db}=="ID_FS_UUID_ENC" -IMPORT{db}=="ID_FS_LABEL_ENC" -IMPORT{db}=="ID_PART_ENTRY_NAME" -IMPORT{db}=="ID_PART_ENTRY_UUID" -IMPORT{db}=="ID_PART_ENTRY_SCHEME" - -# Maps should take precedence over their members. -ENV{DM_UDEV_LOW_PRIORITY_FLAG}!="1", OPTIONS+="link_priority=50" - -# Set some additional symlinks that typically exist for mpath -# path members, too, and should be overridden. -# -# kpartx_id is very robust, it works for suspended maps and maps -# with 0 dependencies. It sets DM_TYPE, DM_PART, DM_WWN -IMPORT{program}=="kpartx_id %M %m $env{DM_UUID}" - -# DM_TYPE only has a reasonable value for partitions on multipath. -ENV{DM_UUID}=="*-mpath-*", ENV{DM_TYPE}=="?*", ENV{DM_SERIAL}=="?*" \ - SYMLINK+="disk/by-id/$env{DM_TYPE}-$env{DM_SERIAL}-part$env{DM_PART}" -ENV{DM_WWN}=="?*", ENV{DM_PART}=="?*", \ - SYMLINK+="disk/by-id/wwn-$env{DM_WWN}-part$env{DM_PART}" - -LABEL="dm_parts_end" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/13-dm-disk.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/13-dm-disk.rules" deleted file mode 100644 index 98d4f433..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/13-dm-disk.rules" +++ /dev/null @@ -1,38 +0,0 @@ -# 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" - -ENV{DM_NAME}=="?*", 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 generate 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" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/40-elevator.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/40-elevator.rules" deleted file mode 100644 index 9503f25b..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/40-elevator.rules" +++ /dev/null @@ -1,20 +0,0 @@ -# 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" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/40-openEuler.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/40-openEuler.rules" deleted file mode 100644 index 9b3f88d7..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/40-openEuler.rules" +++ /dev/null @@ -1,45 +0,0 @@ -# do not edit this file, it will be overwritten on update - -# CPU hotadd request -SUBSYSTEM=="cpu", ACTION=="add", TEST=="online", ATTR{online}=="0", ATTR{online}="1" - -# Memory hotadd request -SUBSYSTEM!="memory", GOTO="memory_hotplug_end" -ACTION!="add", GOTO="memory_hotplug_end" -PROGRAM="/bin/uname -p", RESULT=="s390*", GOTO="memory_hotplug_end" - -ENV{.state}="online" -ATTR{state}=="offline", ATTR{state}="$env{.state}" - -LABEL="memory_hotplug_end" - -# reload sysctl.conf / sysctl.conf.d settings when the bridge module is loaded -# ACTION=="add", SUBSYSTEM=="module", KERNEL=="bridge", RUN+="/usr/lib/systemd/systemd-sysctl --prefix=/proc/sys/net/bridge" - -# load SCSI generic (sg) driver -SUBSYSTEM=="scsi", ENV{DEVTYPE}=="scsi_device", TEST!="[module/sg]", RUN+="/sbin/modprobe -bv sg" -SUBSYSTEM=="scsi", ENV{DEVTYPE}=="scsi_target", TEST!="[module/sg]", RUN+="/sbin/modprobe -bv sg" - -# Rule for prandom character device node permissions -KERNEL=="prandom", MODE="0644" - - -# Rules for creating the ID_PATH for SCSI devices based on the CCW bus -# using the form: ccw--zfcp-: -# -ACTION=="remove", GOTO="zfcp_scsi_device_end" - -# -# Set environment variable "ID_ZFCP_BUS" to "1" if the devices -# (both disk and partition) are SCSI devices based on FCP devices -# -KERNEL=="sd*", SUBSYSTEMS=="ccw", DRIVERS=="zfcp", ENV{.ID_ZFCP_BUS}="1" - -# For SCSI disks -KERNEL=="sd*[!0-9]", SUBSYSTEMS=="scsi", ENV{.ID_ZFCP_BUS}=="1", ENV{DEVTYPE}=="disk", SYMLINK+="disk/by-path/ccw-$attr{hba_id}-zfcp-$attr{wwpn}:$attr{fcp_lun}" - - -# For partitions on a SCSI disk -KERNEL=="sd*[0-9]", SUBSYSTEMS=="scsi", ENV{.ID_ZFCP_BUS}=="1", ENV{DEVTYPE}=="partition", SYMLINK+="disk/by-path/ccw-$attr{hba_id}-zfcp-$attr{wwpn}:$attr{fcp_lun}-part%n" - -LABEL="zfcp_scsi_device_end" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/50-udev-default.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/50-udev-default.rules" deleted file mode 100644 index 08026b72..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/50-udev-default.rules" +++ /dev/null @@ -1,122 +0,0 @@ -# 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" - -# The md driver increments diskseq *after* emitting 'change' uevent. -# Drop the line below if it is fixed on the kernel side. -SUBSYSTEM=="block", KERNEL=="md*", ENV{ID_IGNORE_DISKSEQ}="1" - -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=="misc", KERNEL=="sgx_enclave", GROUP="sgx", MODE="0660" -SUBSYSTEM=="misc", KERNEL=="sgx_vepc", GROUP="sgx", MODE="0660" - -# When using static_node= with non-default permissions, also update -# tmpfiles.d/static-nodes-permissions.conf.in to keep permissions synchronized. - -SUBSYSTEM=="sound", GROUP="audio", \ - OPTIONS+="static_node=snd/seq", OPTIONS+="static_node=snd/timer" - -SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", MODE="0664" - -SUBSYSTEM=="firewire", TEST=="units", TEST=="model", \ - IMPORT{builtin}=="hwdb 'ieee1394:node:ven$attr{vendor}mo$attr{model}units$attr{units}'" - -SUBSYSTEM=="firewire", TEST=="units", TEST!="model", \ - IMPORT{builtin}=="hwdb 'ieee1394:node:ven$attr{vendor}units$attr{units}'" - -SUBSYSTEM=="firewire", TEST=="units", ENV{IEEE1394_UNIT_FUNCTION_MIDI}=="1", GROUP="audio" -SUBSYSTEM=="firewire", TEST=="units", ENV{IEEE1394_UNIT_FUNCTION_AUDIO}=="1", GROUP="audio" -SUBSYSTEM=="firewire", TEST=="units", ENV{IEEE1394_UNIT_FUNCTION_VIDEO}=="1", 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" - -KERNEL=="vfio", MODE="0666", OPTIONS+="static_node=vfio/vfio" - -KERNEL=="vsock", MODE="0666" -KERNEL=="vhost-vsock", GROUP="kvm", MODE="0666", OPTIONS+="static_node=vhost-vsock" - -KERNEL=="vhost-net", GROUP="kvm", MODE="0666", OPTIONS+="static_node=vhost-net" - -KERNEL=="udmabuf", GROUP="kvm" - -SUBSYSTEM=="ptp", ATTR{clock_name}=="KVM virtual PTP", SYMLINK += "ptp_kvm" - -SUBSYSTEM=="ptp", ATTR{clock_name}=="hyperv", SYMLINK += "ptp_hyperv" - -SUBSYSTEM!="dmi", GOTO="dmi_end" -ENV{ID_SYS_VENDOR_IS_RUBBISH}!="1", ENV{ID_VENDOR}="$attr{sys_vendor}" -ENV{ID_SYSFS_ATTRIBUTE_MODEL}=="", ENV{ID_PRODUCT_NAME_IS_RUBBISH}!="1", ENV{ID_MODEL}="$attr{product_name}" -ENV{ID_SYSFS_ATTRIBUTE_MODEL}=="product_name", ENV{ID_MODEL}="$attr{product_name}" -ENV{ID_SYSFS_ATTRIBUTE_MODEL}=="product_version", ENV{ID_MODEL}="$attr{product_version}" -# fallback to board information -ENV{ID_VENDOR}=="", ENV{ID_VENDOR}="$attr{board_vendor}" -ENV{ID_MODEL}=="", ENV{ID_MODEL}="$attr{board_name}" -LABEL="dmi_end" - -LABEL="default_end" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-autosuspend.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-autosuspend.rules" deleted file mode 100644 index ce31a920..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-autosuspend.rules" +++ /dev/null @@ -1,22 +0,0 @@ -# do not edit this file, it will be overwritten on update - -ACTION!="add", GOTO="autosuspend_end" - -# I2C rules -SUBSYSTEM=="i2c", ATTR{name}=="cyapa", \ - ATTR{power/control}="on", GOTO="autosuspend_end" - -# Enable autosuspend if hwdb says so. Here we are relying on -# the hwdb import done earlier based on MODALIAS. -ENV{ID_AUTOSUSPEND}=="1", TEST=="power/control", \ - ATTR{power/control}="auto" - -# Disable USB persist if hwdb says so. -ENV{ID_PERSIST}=="0", TEST=="power/persist", \ - ATTR{power/persist}="0" - -# Set up an autosuspend delay if hwdb say so -ENV{ID_AUTOSUSPEND_DELAY_MS}!="", TEST=="power/control", \ - ATTR{power/autosuspend_delay_ms}="$env{ID_AUTOSUSPEND_DELAY_MS}" - -LABEL="autosuspend_end" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-block.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-block.rules" deleted file mode 100644 index 3134ab99..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-block.rules" +++ /dev/null @@ -1,13 +0,0 @@ -# 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*|mmcblk*[0-9]|msblk*[0-9]|mspblk*[0-9]|nvme*|sd*|vd*|xvd*|bcache*|cciss*|dasd*|ubd*|ubi*|scm*|pmem*|nbd*|zd*", \ - OPTIONS+="watch" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-cdrom_id.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-cdrom_id.rules" deleted file mode 100644 index 829c4d80..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-cdrom_id.rules" +++ /dev/null @@ -1,29 +0,0 @@ -# do not edit this file, it will be overwritten on update - -ACTION=="remove", GOTO="cdrom_end" -SUBSYSTEM!="block", GOTO="cdrom_end" -KERNEL!="sr[0-9]*|vdisk*|xvd*", GOTO="cdrom_end" -ENV{DEVTYPE}!="disk", GOTO="cdrom_end" - -# unconditionally tag device as CDROM -KERNEL=="sr[0-9]*", ENV{ID_CDROM}="1" - -# stop automatically any mount units bound to the device if the media eject -# button is pressed. -ENV{ID_CDROM}=="1", ENV{SYSTEMD_MOUNT_DEVICE_BOUND}="1" - -# media eject button pressed -ENV{DISK_EJECT_REQUEST}=="?*", RUN+="cdrom_id --eject-media $devnode", GOTO="cdrom_end" - -# import device and media properties and lock tray to -# enable the receiving of media eject button events -IMPORT{program}=="cdrom_id --lock-media $devnode" - -# ejecting a CD does not remove the device node, so mark the systemd device -# unit as inactive while there is no medium; this automatically cleans up of -# stale mounts after ejecting -ENV{DISK_MEDIA_CHANGE}=="?*", ENV{ID_CDROM_MEDIA}!="?*", ENV{SYSTEMD_READY}="0" - -KERNEL=="sr0", SYMLINK+="cdrom", OPTIONS+="link_priority=-100" - -LABEL="cdrom_end" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-drm.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-drm.rules" deleted file mode 100644 index a81bf351..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-drm.rules" +++ /dev/null @@ -1,8 +0,0 @@ -# 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" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-evdev.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-evdev.rules" deleted file mode 100644 index dfd16a47..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-evdev.rules" +++ /dev/null @@ -1,30 +0,0 @@ -# do not edit this file, it will be overwritten on update - -ACTION=="remove", GOTO="evdev_end" -KERNEL!="event*", GOTO="evdev_end" - -# Execute the match patterns below, from least-to-most specific. - -# Device matching the modalias string (bustype, vendor, product, version, other properties) -IMPORT{builtin}=="hwdb --subsystem=input --lookup-prefix=evdev:", \ - ENV{.HAVE_HWDB_PROPERTIES}="1" - -# AT keyboard matching by the machine's DMI data -DRIVERS=="atkbd", \ - IMPORT{builtin}=="hwdb 'evdev:atkbd:$attr{[dmi/id]modalias}'", \ - ENV{.HAVE_HWDB_PROPERTIES}="1" - -# 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}'", \ - ENV{.HAVE_HWDB_PROPERTIES}="1" - -# 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}'", \ - ENV{.HAVE_HWDB_PROPERTIES}="1" - -ENV{.HAVE_HWDB_PROPERTIES}=="1", \ - IMPORT{builtin}=="keyboard" - -LABEL="evdev_end" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-fido-id.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-fido-id.rules" deleted file mode 100644 index a82f82bb..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-fido-id.rules" +++ /dev/null @@ -1,14 +0,0 @@ -# do not edit this file, it will be overwritten on update - -ACTION=="remove", GOTO="fido_id_end" - -SUBSYSTEM=="hidraw", IMPORT{program}=="fido_id" - -# Tag any form of security token as such -ENV{ID_SECURITY_TOKEN}=="1", TAG+="security-device" - -SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ENV{ID_USB_INTERFACES}=="*:0b????:*", ENV{ID_SMARTCARD_READER}="1" -# Tag any CCID device (i.e. Smartcard Reader) as security token -ENV{ID_SMARTCARD_READER}=="1", TAG+="security-device" - -LABEL="fido_id_end" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-infiniband.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-infiniband.rules" deleted file mode 100644 index e0c81d89..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-infiniband.rules" +++ /dev/null @@ -1,12 +0,0 @@ -# do not edit this file, it will be overwritten on update - -ACTION=="remove", GOTO="infiniband_end" -SUBSYSTEM!="infiniband_verbs", GOTO="infiniband_end" -KERNEL!="uverbs*", GOTO="infiniband_end" - -IMPORT{builtin}=="path_id" - -ENV{ID_PATH}=="?*", SYMLINK+="infiniband/by-path/$env{ID_PATH}" -ATTR{ibdev}=="?*", SYMLINK+="infiniband/by-ibdev/uverbs-$attr{ibdev}" - -LABEL="infiniband_end" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-input-id.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-input-id.rules" deleted file mode 100644 index ad20a581..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-input-id.rules" +++ /dev/null @@ -1,8 +0,0 @@ -# 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" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-net.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-net.rules" deleted file mode 100644 index 41875017..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-net.rules" +++ /dev/null @@ -1 +0,0 @@ -ACTION=="add", SUBSYSTEM=="net", DRIVERS=="?*", ATTR{type}=="1", PROGRAM="/lib/udev/rename_device", RESULT=="?*", NAME="$result" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-persistent-alsa.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-persistent-alsa.rules" deleted file mode 100644 index 044f22b7..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-persistent-alsa.rules" +++ /dev/null @@ -1,14 +0,0 @@ -# do not edit this file, it will be overwritten on update - -ACTION=="remove", GOTO="persistent_alsa_end" -SUBSYSTEM!="sound", GOTO="persistent_alsa_end" -KERNEL!="controlC[0-9]*", GOTO="persistent_alsa_end" - -SUBSYSTEMS=="usb", ENV{ID_MODEL}=="", IMPORT{builtin}=="usb_id" -ENV{ID_SERIAL}=="?*", ENV{ID_USB_INTERFACE_NUM}=="?*", SYMLINK+="snd/by-id/$env{ID_BUS}-$env{ID_SERIAL}-$env{ID_USB_INTERFACE_NUM}" -ENV{ID_SERIAL}=="?*", ENV{ID_USB_INTERFACE_NUM}=="", SYMLINK+="snd/by-id/$env{ID_BUS}-$env{ID_SERIAL}" - -IMPORT{builtin}=="path_id" -ENV{ID_PATH}=="?*", SYMLINK+="snd/by-path/$env{ID_PATH}" - -LABEL="persistent_alsa_end" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-persistent-input.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-persistent-input.rules" deleted file mode 100644 index baa68dd2..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-persistent-input.rules" +++ /dev/null @@ -1,42 +0,0 @@ -# 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, usb and i2c devices; platform supports only a single interface that way -SUBSYSTEMS=="usb|platform|i2c", ENV{ID_PATH}=="?*", KERNEL=="event*", ENV{.INPUT_CLASS}=="", \ - SYMLINK+="input/by-path/$env{ID_PATH}-event" - -LABEL="persistent_input_end" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-persistent-storage-tape.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-persistent-storage-tape.rules" deleted file mode 100644 index 1858df54..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-persistent-storage-tape.rules" +++ /dev/null @@ -1,36 +0,0 @@ -# do not edit this file, it will be overwritten on update - -# persistent storage links: /dev/tape/{by-id,by-path} - -ACTION=="remove", GOTO="persistent_storage_tape_end" -ENV{UDEV_DISABLE_PERSISTENT_STORAGE_RULES_FLAG}=="1", GOTO="persistent_storage_tape_end" - -# type 8 devices are "Medium Changers" -SUBSYSTEM=="scsi_generic", SUBSYSTEMS=="scsi", ATTRS{type}=="8", IMPORT{program}=="scsi_id --sg-version=3 --export --whitelisted -d $devnode", \ - SYMLINK+="tape/by-id/scsi-$env{ID_SERIAL} tape/by-id/scsi-$env{ID_SERIAL}-changer" - -# iSCSI devices from the same host have all the same ID_SERIAL, -# but additionally a property named ID_SCSI_SERIAL. -SUBSYSTEM=="scsi_generic", SUBSYSTEMS=="scsi", ATTRS{type}=="8", ENV{ID_SCSI_SERIAL}=="?*", \ - SYMLINK+="tape/by-id/scsi-$env{ID_SCSI_SERIAL}" - -SUBSYSTEM=="scsi_generic", SUBSYSTEMS=="scsi", ATTRS{type}=="8", IMPORT{builtin}=="path_id", \ - SYMLINK+="tape/by-path/$env{ID_PATH}-changer" - -SUBSYSTEM!="scsi_tape", GOTO="persistent_storage_tape_end" - -KERNEL=="st*[0-9]|nst*[0-9]", ATTRS{ieee1394_id}=="?*", ENV{ID_SERIAL}="$attr{ieee1394_id}", ENV{ID_BUS}="ieee1394" -KERNEL=="st*[0-9]|nst*[0-9]", ENV{ID_SERIAL}!="?*", SUBSYSTEMS=="usb", IMPORT{builtin}=="usb_id" -KERNEL=="st*[0-9]|nst*[0-9]", ENV{ID_SERIAL}!="?*", SUBSYSTEMS=="scsi", KERNELS=="[0-9]*:*[0-9]", ENV{.BSG_DEV}="$root/bsg/$id" -KERNEL=="st*[0-9]|nst*[0-9]", ENV{ID_SERIAL}!="?*", IMPORT{program}=="scsi_id --whitelisted --export --device=$env{.BSG_DEV}", ENV{ID_BUS}="scsi" -KERNEL=="st*[0-9]", ENV{ID_SERIAL}=="?*", SYMLINK+="tape/by-id/$env{ID_BUS}-$env{ID_SERIAL}", OPTIONS+="link_priority=10" -KERNEL=="st*[0-9]", ENV{ID_SCSI_SERIAL}=="?*", SYMLINK+="tape/by-id/$env{ID_BUS}-$env{ID_SCSI_SERIAL}" -KERNEL=="nst*[0-9]", ENV{ID_SERIAL}=="?*", SYMLINK+="tape/by-id/$env{ID_BUS}-$env{ID_SERIAL}-nst" -KERNEL=="nst*[0-9]", ENV{ID_SCSI_SERIAL}=="?*", SYMLINK+="tape/by-id/$env{ID_BUS}-$env{ID_SCSI_SERIAL}-nst" - -# by-path (parent device path) -KERNEL=="st*[0-9]|nst*[0-9]", IMPORT{builtin}=="path_id" -KERNEL=="st*[0-9]", ENV{ID_PATH}=="?*", SYMLINK+="tape/by-path/$env{ID_PATH}" -KERNEL=="nst*[0-9]", ENV{ID_PATH}=="?*", SYMLINK+="tape/by-path/$env{ID_PATH}-nst" - -LABEL="persistent_storage_tape_end" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-persistent-storage.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-persistent-storage.rules" deleted file mode 100644 index be29bdab..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-persistent-storage.rules" +++ /dev/null @@ -1,142 +0,0 @@ -# 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 - -ACTION=="remove", GOTO="persistent_storage_end" -ENV{UDEV_DISABLE_PERSISTENT_STORAGE_RULES_FLAG}=="1", GOTO="persistent_storage_end" - -SUBSYSTEM!="block|ubi", GOTO="persistent_storage_end" -KERNEL!="loop*|mmcblk*[0-9]|msblk*[0-9]|mspblk*[0-9]|nvme*|sd*|sr*|vd*|xvd*|bcache*|cciss*|dasd*|ubd*|ubi*|scm*|pmem*|nbd*|zd*", GOTO="persistent_storage_end" - -# ignore partitions that span the entire disk -TEST=="whole_disk", GOTO="persistent_storage_end" - -# For partitions import parent disk ID_* information, except ID_FS_*. -# -# This is particularly important on media where a filesystem superblock and -# partition table are found on the same level, e.g. common Linux distro ISO -# installation media. -# -# In the case where a partition device points to the same filesystem that -# was detected on the parent disk, the ID_FS_* information is already -# present on the partition devices as well as the parent, so no need to -# propagate it. In the case where the partition device points to a different -# filesystem, merging the parent ID_FS_ properties would lead to -# inconsistencies, so we avoid doing so. -ENV{DEVTYPE}=="partition", \ - IMPORT{parent}=="ID_[!F]*", IMPORT{parent}=="ID_", \ - IMPORT{parent}=="ID_F[!S]*", IMPORT{parent}=="ID_F", \ - IMPORT{parent}=="ID_FS[!_]*", IMPORT{parent}=="ID_FS" - -# 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", ATTRS{firmware_rev}=="?*", ENV{ID_REVISION}="$attr{firmware_rev}" -KERNEL=="nvme*[0-9]n*[0-9]", ENV{DEVTYPE}=="disk", ENV{ID_MODEL}=="?*", ENV{ID_SERIAL_SHORT}=="?*", \ - OPTIONS="string_escape=replace", 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", ATTRS{firmware_rev}=="?*", ENV{ID_REVISION}="$attr{firmware_rev}" -KERNEL=="nvme*[0-9]n*[0-9]p*[0-9]", ENV{DEVTYPE}=="partition", ENV{ID_MODEL}=="?*", ENV{ID_SERIAL_SHORT}=="?*", \ - OPTIONS="string_escape=replace", 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" - -# Also import properties from usb_id for USB devices -KERNEL=="sd*[!0-9]|sr*", 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" -# Previously, ata_id in the above might not be able to retrieve attributes correctly, -# and properties from usb_id were used as a fallback. See issue #24921 and PR #24923. -# To keep backward compatibility, still we need to create symlinks based on USB serial. -# See issue #25179. -KERNEL=="sd*|sr*|cciss*", ENV{DEVTYPE}=="disk", ENV{ID_USB_SERIAL}=="?*", SYMLINK+="disk/by-id/usb-$env{ID_USB_SERIAL}" -KERNEL=="sd*|cciss*", ENV{DEVTYPE}=="partition", ENV{ID_USB_SERIAL}=="?*", SYMLINK+="disk/by-id/usb-$env{ID_USB_SERIAL}-part%n" - -# PMEM devices -KERNEL=="pmem*", ENV{DEVTYPE}=="disk", ATTRS{uuid}=="?*", SYMLINK+="disk/by-id/pmem-$attr{uuid}" - -# 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{serial}=="?*", ENV{ID_SERIAL}="$attr{serial}" -KERNEL=="mmcblk[0-9]", SUBSYSTEMS=="mmc", ATTRS{name}=="?*", ENV{ID_NAME}="$attr{name}" -KERNEL=="mmcblk[0-9]", ENV{ID_NAME}=="?*", ENV{ID_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" - -# 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" -ENV{DEVTYPE}=="disk", SUBSYSTEMS=="nvme-subsystem", 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" -# compatible links for ATA devices -KERNEL!="mmcblk[0-9]boot[0-9]", ENV{DEVTYPE}=="disk", ENV{ID_PATH_ATA_COMPAT}=="?*", SYMLINK+="disk/by-path/$env{ID_PATH_ATA_COMPAT}" -ENV{DEVTYPE}=="partition", ENV{ID_PATH_ATA_COMPAT}=="?*", SYMLINK+="disk/by-path/$env{ID_PATH_ATA_COMPAT}-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" - -# allow admin to disable probing the filesystem for slow devices like floppy disk drives -ENV{UDEV_DISABLE_PERSISTENT_STORAGE_BLKID_FLAG}=="1", GOTO="persistent_storage_blkid_probe_end" - -# 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 --hint=session_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*|mmcblk[0-9]boot[0-9]", IMPORT{builtin}=="blkid" - -LABEL="persistent_storage_blkid_probe_end" - -# 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}" - -# by-diskseq link (if an app is told to open a path like this, they may parse -# the diskseq number from the path, then issue BLKGETDISKSEQ to verify they really got -# the right device, to access specific disks in a race-free fashion) -ENV{DISKSEQ}=="?*", ENV{DEVTYPE}!="partition", ENV{ID_IGNORE_DISKSEQ}!="1", SYMLINK+="disk/by-diskseq/$env{DISKSEQ}" -ENV{DISKSEQ}=="?*", ENV{DEVTYPE}=="partition", ENV{ID_IGNORE_DISKSEQ}!="1", SYMLINK+="disk/by-diskseq/$env{DISKSEQ}-part%n" - -LABEL="persistent_storage_end" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-persistent-v4l.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-persistent-v4l.rules" deleted file mode 100644 index ea26b23c..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-persistent-v4l.rules" +++ /dev/null @@ -1,20 +0,0 @@ -# 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" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-raw.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-raw.rules" deleted file mode 100644 index 547687d9..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-raw.rules" +++ /dev/null @@ -1 +0,0 @@ -# Enter raw device bindings here. diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-rdma-ndd.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-rdma-ndd.rules" deleted file mode 100644 index ef7768e0..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-rdma-ndd.rules" +++ /dev/null @@ -1,3 +0,0 @@ -# If an InfiniBand/RDMA device is installed with a writable node_description -# sysfs then start rdma-ndd to keep it up to date -SUBSYSTEM=="infiniband", TAG+="systemd", ATTRS{node_desc}=="*", ENV{SYSTEMD_WANTS}+="rdma-ndd.service" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-rdma-persistent-naming.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-rdma-persistent-naming.rules" deleted file mode 100644 index fcb6c784..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-rdma-persistent-naming.rules" +++ /dev/null @@ -1,32 +0,0 @@ -# Rename modes: -# NAME_FALLBACK - Try to name devices in the following order: -# by-pci -> by-guid -> kernel -# NAME_KERNEL - leave name as kernel provided -# NAME_PCI - based on PCI/slot/function location -# NAME_GUID - based on system image GUID -# NAME_FIXED - rename the device to the fixed named in the next argument -# -# The stable names are combination of device type technology and rename mode. -# Infiniband - ib* -# RoCE - roce* -# iWARP - iw* -# OPA - opa* -# Default (unknown protocol) - rdma* -# -# Example: -# * NAME_PCI -# pci = 0000:00:0c.4 -# Device type = IB -# mlx5_0 -> ibp0s12f4 -# * NAME_GUID -# GUID = 5254:00c0:fe12:3455 -# Device type = RoCE -# mlx5_0 -> rocex525400c0fe123455 -# -ACTION=="add", SUBSYSTEM=="infiniband", PROGRAM="rdma_rename %k NAME_FALLBACK" - -# Example: -# * NAME_FIXED -# fixed name for specific board_id -# -#ACTION=="add", ATTR{board_id}=="MSF0010110035", SUBSYSTEM=="infiniband", PROGRAM="rdma_rename %k NAME_FIXED myib" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-sensor.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-sensor.rules" deleted file mode 100644 index 68929d6b..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-sensor.rules" +++ /dev/null @@ -1,34 +0,0 @@ -# do not edit this file, it will be overwritten on update - -ACTION=="remove", GOTO="sensor_end" - -# device matching the sensor's label, name and the machine's DMI data for IIO devices -SUBSYSTEM=="iio", KERNEL=="iio*", SUBSYSTEMS=="usb|i2c|platform", ATTR{label}!="", \ - IMPORT{builtin}=="hwdb 'sensor:$attr{label}:modalias:$attr{modalias}:$attr{[dmi/id]modalias}'", \ - GOTO="sensor_end" - -# Before Linux v6.0, cros-ec-accel used a non-standard 'location' sysfs file -SUBSYSTEM=="iio", KERNEL=="iio*", SUBSYSTEMS=="platform", \ - ATTR{name}=="cros-ec-accel|cros-ec-accel-legacy", ATTR{location}=="base", \ - IMPORT{builtin}=="hwdb 'sensor:accel-base:modalias:$attr{modalias}:$attr{[dmi/id]modalias}'", \ - GOTO="sensor_end" - -SUBSYSTEM=="iio", KERNEL=="iio*", SUBSYSTEMS=="platform", \ - ATTR{name}=="cros-ec-accel|cros-ec-accel-legacy", ATTR{location}=="lid", \ - IMPORT{builtin}=="hwdb 'sensor:accel-display:modalias:$attr{modalias}:$attr{[dmi/id]modalias}'", \ - 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|platform", \ - 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" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-serial.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-serial.rules" deleted file mode 100644 index 0f3f71db..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-serial.rules" +++ /dev/null @@ -1,26 +0,0 @@ -# do not edit this file, it will be overwritten on update - -ACTION=="remove", GOTO="serial_end" -SUBSYSTEM!="tty", GOTO="serial_end" - -SUBSYSTEMS=="usb", IMPORT{builtin}=="usb_id", IMPORT{builtin}=="hwdb --subsystem=usb" -SUBSYSTEMS=="pci", ENV{ID_BUS}=="", ENV{ID_BUS}="pci", \ - ENV{ID_VENDOR_ID}="$attr{vendor}", ENV{ID_MODEL_ID}="$attr{device}", \ - IMPORT{builtin}=="hwdb --subsystem=pci" - -# /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}" - -ENV{ID_BUS}=="", GOTO="serial_end" -ENV{ID_SERIAL}=="", GOTO="serial_end" -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" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-srp_daemon.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-srp_daemon.rules" deleted file mode 100644 index cedc828b..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/60-srp_daemon.rules" +++ /dev/null @@ -1 +0,0 @@ -#SUBSYSTEM=="infiniband_mad", KERNEL=="*umad*", PROGRAM=="/bin/systemctl show srp_daemon -p ActiveState", RESULT=="ActiveState=active", ENV{SYSTEMD_WANTS}+="srp_daemon_port@$attr{ibdev}:$attr{port}.service" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/62-multipath.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/62-multipath.rules" deleted file mode 100644 index ef485959..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/62-multipath.rules" +++ /dev/null @@ -1,92 +0,0 @@ -# Set DM_MULTIPATH_DEVICE_PATH if the device should be handled by multipath -SUBSYSTEM!="block", GOTO="end_mpath" -KERNEL!="sd*|dasd*|nvme*", GOTO="end_mpath" -ACTION=="remove", TEST=="/dev/shm/multipath/find_multipaths/$major:$minor", \ - RUN+="/usr/bin/rm -f /dev/shm/multipath/find_multipaths/$major:$minor" -ACTION!="add|change", GOTO="end_mpath" - -IMPORT{cmdline}=="nompath" -ENV{nompath}=="?*", GOTO="end_mpath" -IMPORT{cmdline}=="multipath" -ENV{multipath}=="off", GOTO="end_mpath" - -ENV{DEVTYPE}!="partition", GOTO="test_dev" -IMPORT{parent}=="DM_MULTIPATH_DEVICE_PATH" -ENV{DM_MULTIPATH_DEVICE_PATH}=="1", ENV{ID_FS_TYPE}="none", \ - ENV{SYSTEMD_READY}="0" -GOTO="end_mpath" - -LABEL="test_dev" - -ENV{MPATH_SBIN_PATH}="/sbin" -TEST!="$env{MPATH_SBIN_PATH}/multipath", ENV{MPATH_SBIN_PATH}="/usr/sbin" - -# FIND_MULTIPATHS_WAIT_UNTIL is the timeout (in seconds after the -# epoch). -IMPORT{db}=="FIND_MULTIPATHS_WAIT_UNTIL" -ENV{.SAVED_FM_WAIT_UNTIL}="$env{FIND_MULTIPATHS_WAIT_UNTIL}" - -# multipath -u needs to know if this device has ever been exported -IMPORT{db}=="DM_MULTIPATH_DEVICE_PATH" - -# multipath -u sets DM_MULTIPATH_DEVICE_PATH and, -# if "find_multipaths smart", also FIND_MULTIPATHS_WAIT_UNTIL. -IMPORT{program}=="$env{MPATH_SBIN_PATH}/multipath -u %k" - -# case 1: this is definitely multipath -ENV{DM_MULTIPATH_DEVICE_PATH}=="1", \ - ENV{ID_FS_TYPE}="mpath_member", ENV{SYSTEMD_READY}="0", \ - GOTO="stop_wait" - -# case 2: this is definitely not multipath, or timeout has expired -ENV{DM_MULTIPATH_DEVICE_PATH}!="2", \ - GOTO="stop_wait" - -# Code below here is only run in "smart" mode. -# multipath -u has indicated this is "maybe" multipath. - -# Note that DM_MULTIPATH_DEVICE_PATH has the value 2 at this point. -# This value will never propagate to other rules files, because -# it will be reset to 1 in the "pretend_multipath" section below. - -# This shouldn't happen, just in case. -ENV{FIND_MULTIPATHS_WAIT_UNTIL}!="?*", GOTO="end_mpath" - -# Be careful not to start the timer twice. -ACTION!="add", GOTO="pretend_mpath" -ENV{.SAVED_FM_WAIT_UNTIL}=="?*", GOTO="pretend_mpath" - -# At this point, we are seeing this path for the first time, and it's "maybe" multipath. - -# The actual start command for the timer. -# -# The purpose of this command is only to make sure we will receive another -# uevent eventually. *Any* uevent may cause waiting to finish if it either ends -# in case 1-3 above, or if it arrives after FIND_MULTIPATHS_WAIT_UNTIL. -# -# Note that this will try to activate multipathd if it isn't running yet. -# If that fails, the unit starts and expires nonetheless. If multipathd -# startup needs to wait for other services, this wait time will add up with -# the --on-active timeout. -# -# We must trigger an "add" event because LVM2 will only act on those. - -# RUN+="/usr/bin/systemd-run --unit=cancel-multipath-wait-$kernel --description 'cancel waiting for multipath siblings of $kernel' --no-block --timer-property DefaultDependencies=no --timer-property Conflicts=shutdown.target --timer-property Before=shutdown.target --timer-property AccuracySec=500ms --property DefaultDependencies=no --property Conflicts=shutdown.target --property Before=shutdown.target --property Wants=multipathd.service --property After=multipathd.service --on-active=$env{FIND_MULTIPATHS_WAIT_UNTIL} /usr/bin/udevadm trigger --action=add $sys$devpath" -RUN+="/usr/bin/devctl trigger --action=add $sys$devpath" - -LABEL="pretend_mpath" -ENV{DM_MULTIPATH_DEVICE_PATH}="1" -ENV{SYSTEMD_READY}="0" -GOTO="end_mpath" - -LABEL="stop_wait" -# If timeout hasn't expired but we're not in "maybe" state any more, stop timer -# Do this only once, and only if the timer has been started before -IMPORT{db}=="FIND_MULTIPATHS_WAIT_CANCELLED" -# ENV{FIND_MULTIPATHS_WAIT_CANCELLED}!="?*", \ -# ENV{FIND_MULTIPATHS_WAIT_UNTIL}=="?*", \ -# ENV{FIND_MULTIPATHS_WAIT_UNTIL}!="0", \ -# ENV{FIND_MULTIPATHS_WAIT_CANCELLED}="1", \ -# RUN+="/usr/bin/systemctl stop cancel-multipath-wait-$kernel.timer" - -LABEL="end_mpath" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/63-md-raid-arrays.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/63-md-raid-arrays.rules" deleted file mode 100644 index 36ee9791..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/63-md-raid-arrays.rules" +++ /dev/null @@ -1,41 +0,0 @@ -# do not edit this file, it will be overwritten on update - -SUBSYSTEM!="block", GOTO="md_end" - -# handle md arrays -ACTION!="add|change", GOTO="md_end" -KERNEL!="md*", GOTO="md_end" - -# partitions have no md/{array_state,metadata_version}, but should not -# for that reason be ignored. -ENV{DEVTYPE}=="partition", GOTO="md_ignore_state" - -# container devices have a metadata version of e.g. 'external:ddf' and -# never leave state 'inactive' -ATTR{md/metadata_version}=="external:[A-Za-z]*", ATTR{md/array_state}=="inactive", GOTO="md_ignore_state" -TEST!="md/array_state", ENV{SYSTEMD_READY}="0", GOTO="md_end" -ATTR{md/array_state}=="|clear|inactive", ENV{SYSTEMD_READY}="0", GOTO="md_end" -LABEL="md_ignore_state" - -IMPORT{program}=="/usr/sbin/mdadm --detail --export $devnode" -ENV{DEVTYPE}=="disk", ENV{MD_NAME}=="?*", SYMLINK+="disk/by-id/md-name-$env{MD_NAME}", OPTIONS+="string_escape=replace" -ENV{DEVTYPE}=="disk", ENV{MD_UUID}=="?*", SYMLINK+="disk/by-id/md-uuid-$env{MD_UUID}" -ENV{DEVTYPE}=="disk", ENV{MD_DEVNAME}=="?*", SYMLINK+="md/$env{MD_DEVNAME}" -ENV{DEVTYPE}=="partition", ENV{MD_NAME}=="?*", SYMLINK+="disk/by-id/md-name-$env{MD_NAME}-part%n", OPTIONS+="string_escape=replace" -ENV{DEVTYPE}=="partition", ENV{MD_UUID}=="?*", SYMLINK+="disk/by-id/md-uuid-$env{MD_UUID}-part%n" -ENV{DEVTYPE}=="partition", ENV{MD_DEVNAME}=="*[^0-9]", SYMLINK+="md/$env{MD_DEVNAME}%n" -ENV{DEVTYPE}=="partition", ENV{MD_DEVNAME}=="*[0-9]", SYMLINK+="md/$env{MD_DEVNAME}p%n" - -IMPORT{builtin}=="blkid" -OPTIONS+="link_priority=100" -OPTIONS+="watch" -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{MD_LEVEL}=="raid[1-9]*", ENV{SYSTEMD_WANTS}+="mdmonitor.service" - -# Tell systemd to run mdmon for our container, if we need it. -ENV{MD_LEVEL}=="raid[1-9]*", ENV{MD_CONTAINER}=="?*", PROGRAM="/usr/bin/readlink $env{MD_CONTAINER}", ENV{MD_MON_THIS}="%c" -ENV{MD_MON_THIS}=="?*", PROGRAM="/usr/bin/basename $env{MD_MON_THIS}", ENV{SYSTEMD_WANTS}+="mdmon@%c.service" - -LABEL="md_end" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/64-btrfs-dm.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/64-btrfs-dm.rules" deleted file mode 100644 index b2e49f4e..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/64-btrfs-dm.rules" +++ /dev/null @@ -1,10 +0,0 @@ -SUBSYSTEM!="block", GOTO="btrfs_end" -KERNEL!="dm-[0-9]*", GOTO="btrfs_end" -ACTION!="add|change", GOTO="btrfs_end" -ENV{ID_FS_TYPE}!="btrfs", GOTO="btrfs_end" - -# Once the device mapper symlink is created, tell btrfs about it -# so we get the friendly name in /proc/mounts (and tools that read it) -ENV{DM_NAME}=="?*", RUN{builtin}+="btrfs ready /dev/mapper/$env{DM_NAME}" - -LABEL="btrfs_end" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/64-btrfs.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/64-btrfs.rules" deleted file mode 100644 index 2c62d0cb..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/64-btrfs.rules" +++ /dev/null @@ -1,17 +0,0 @@ -# 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" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/64-md-raid-assembly.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/64-md-raid-assembly.rules" deleted file mode 100644 index d6138248..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/64-md-raid-assembly.rules" +++ /dev/null @@ -1,38 +0,0 @@ -# do not edit this file, it will be overwritten on update - -# Don't process any events if anaconda is running as anaconda brings up -# raid devices manually -ENV{ANACONDA}=="?*", GOTO="md_inc_end" -# assemble md arrays - -SUBSYSTEM!="block", GOTO="md_inc_end" - -# skip non-initialized devices -ENV{SYSTEMD_READY}=="0", GOTO="md_inc_end" - -# handle potential components of arrays (the ones supported by md) -ENV{ID_FS_TYPE}=="linux_raid_member", GOTO="md_inc" - -# "noiswmd" on kernel command line stops mdadm from handling -# "isw" (aka IMSM - Intel RAID). -# "nodmraid" on kernel command line stops mdadm from handling -# "isw" or "ddf". -IMPORT{cmdline}=="noiswmd" -IMPORT{cmdline}=="nodmraid" - -ENV{nodmraid}=="?*", GOTO="md_inc_end" -ENV{ID_FS_TYPE}=="ddf_raid_member", GOTO="md_inc" -ENV{noiswmd}=="?*", GOTO="md_inc_end" -ENV{ID_FS_TYPE}=="isw_raid_member", GOTO="md_inc" -GOTO="md_inc_end" - -LABEL="md_inc" - -# remember you can limit what gets auto/incrementally assembled by -# mdadm.conf(5)'s 'AUTO' and selectively whitelist using 'ARRAY' -ACTION=="add|change", IMPORT{program}=="/usr/sbin/mdadm --incremental --export $devnode --offroot $env{DEVLINKS}" -ACTION=="add|change", ENV{MD_STARTED}=="*unsafe*", ENV{MD_FOREIGN}=="no", ENV{SYSTEMD_WANTS}+="mdadm-last-resort@$env{MD_DEVICE}.timer" -ACTION=="remove", ENV{ID_PATH}=="?*", RUN+="/usr/sbin/mdadm -If $name --path $env{ID_PATH}" -ACTION=="remove", ENV{ID_PATH}!="?*", RUN+="/usr/sbin/mdadm -If $name" - -LABEL="md_inc_end" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/66-kpartx.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/66-kpartx.rules" deleted file mode 100644 index ea12ac41..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/66-kpartx.rules" +++ /dev/null @@ -1,41 +0,0 @@ -# -# persistent links for device-mapper devices -# only hardware-backed device-mapper devices (ie multipath, dmraid, -# and kpartx) have meaningful persistent device names -# - -KERNEL!="dm-*", GOTO="kpartx_end" -ACTION!="add|change", GOTO="kpartx_end" -ENV{DM_UUID}!="?*", GOTO="kpartx_end" -ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}=="1", GOTO="kpartx_end" - -# Create dm tables for partitions on multipath devices. -ENV{DM_UUID}!="mpath-?*", GOTO="mpath_kpartx_end" - -# DM_SUBSYSTEM_UDEV_FLAG1 is the "skip_kpartx" flag. -# For events not generated by libdevmapper, we need to fetch it from db: -# - "change" events with DM_ACTIVATION!="1" (e.g. partition table changes) -# - "add" events for which rules are not disabled ("coldplug" case) -ENV{DM_ACTIVATION}!="1", IMPORT{db}=="DM_SUBSYSTEM_UDEV_FLAG1" -ACTION=="add", IMPORT{db}=="DM_SUBSYSTEM_UDEV_FLAG1" -ENV{DM_SUBSYSTEM_UDEV_FLAG1}=="1", GOTO="mpath_kpartx_end" - -# 11-dm-mpath.rules sets MPATH_UNCHANGED for events that can be ignored. -ENV{MPATH_UNCHANGED}=="1", GOTO="mpath_kpartx_end" - -# Don't run kpartx now if we know it will fail or hang. -ENV{DM_SUSPENDED}=="1", GOTO="mpath_kpartx_end" -ENV{DM_NOSCAN}=="1", GOTO="mpath_kpartx_end" - -# Run kpartx -GOTO="run_kpartx" -LABEL="mpath_kpartx_end" - -## Code for other subsystems (non-multipath) could be placed here ## - -GOTO="kpartx_end" - -LABEL="run_kpartx" -RUN+="/sbin/kpartx -un /dev/$name" - -LABEL="kpartx_end" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/68-del-part-nodes.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/68-del-part-nodes.rules" deleted file mode 100644 index 0b3f1219..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/68-del-part-nodes.rules" +++ /dev/null @@ -1,33 +0,0 @@ -# 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" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/69-dm-lvm.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/69-dm-lvm.rules" deleted file mode 100644 index 871ebd36..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/69-dm-lvm.rules" +++ /dev/null @@ -1,83 +0,0 @@ -# This rule requires blkid to be called on block devices before so only devices -# used as LVM PVs are processed (ID_FS_TYPE="LVM2_member"). - -SUBSYSTEM!="block", GOTO="lvm_end" - - -ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}=="1", GOTO="lvm_end" - -# Only process devices already marked as a PV - this requires blkid to be called before. -ENV{ID_FS_TYPE}!="LVM2_member", GOTO="lvm_end" -ENV{DM_MULTIPATH_DEVICE_PATH}=="1", GOTO="lvm_end" -ACTION=="remove", GOTO="lvm_end" - -# Create /dev/disk/by-id/lvm-pv-uuid- symlink for each PV -ENV{ID_FS_UUID_ENC}=="?*", SYMLINK+="disk/by-id/lvm-pv-uuid-$env{ID_FS_UUID_ENC}" - -# If the PV is a special device listed below, scan only if the device is -# properly activated. These devices are not usable after an ADD event, -# but they require an extra setup and they are ready after a CHANGE event. -# Also support coldplugging with ADD event but only if the device is already -# properly activated. -# This logic should be eventually moved to rules where those particular -# devices are processed primarily (MD and loop). - -# DM device: -KERNEL!="dm-[0-9]*", GOTO="next" -ENV{DM_UDEV_PRIMARY_SOURCE_FLAG}=="1", ENV{DM_ACTIVATION}=="1", GOTO="lvm_scan" -GOTO="lvm_end" - -# MD device: -LABEL="next" -KERNEL!="md[0-9]*", GOTO="next" -IMPORT{db}=="LVM_MD_PV_ACTIVATED" -ACTION=="add", ENV{LVM_MD_PV_ACTIVATED}=="1", GOTO="lvm_scan" -ACTION=="change", ENV{LVM_MD_PV_ACTIVATED}!="1", TEST=="md/array_state", ENV{LVM_MD_PV_ACTIVATED}="1", GOTO="lvm_scan" -ACTION=="add", KERNEL=="md[0-9]*p[0-9]*", GOTO="lvm_scan" -ENV{LVM_MD_PV_ACTIVATED}!="1", ENV{SYSTEMD_READY}="0" -GOTO="lvm_end" - -# Loop device: -LABEL="next" -KERNEL!="loop[0-9]*", GOTO="next" -ACTION=="add", ENV{LVM_LOOP_PV_ACTIVATED}=="1", GOTO="lvm_scan" -ACTION=="change", ENV{LVM_LOOP_PV_ACTIVATED}!="1", TEST=="loop/backing_file", ENV{LVM_LOOP_PV_ACTIVATED}="1", GOTO="lvm_scan" -ENV{LVM_LOOP_PV_ACTIVATED}!="1", ENV{SYSTEMD_READY}="0" -GOTO="lvm_end" - -LABEL="next" -ACTION!="add", GOTO="lvm_end" - -LABEL="lvm_scan" - -ENV{SYSTEMD_READY}="1" - -# pvscan will check if this device completes a VG, -# i.e. all PVs in the VG are now present with the -# arrival of this PV. If so, it prints to stdout: -# LVM_VG_NAME_COMPLETE='foo' -# -# When the VG is complete it can be activated, so -# vgchange -aay is run. It is run via -# systemd since it can take longer to run than -# udev wants to block when processing rules. -# (if there are hundreds of LVs to activate, -# the vgchange can take many seconds.) -# -# pvscan only reads the single device specified, -# and uses temp files under /run/lvm to check if -# other PVs in the VG are present. -# -# If event_activation=0 in lvm.conf, this pvscan -# (using checkcomplete) will do nothing, so that -# no event-based autoactivation will be happen. -# -# TODO: adjust the output of vgchange -aay so that -# it's better suited to appearing in the journal. - -IMPORT{program}=="/usr/sbin/lvm pvscan --cache --listvg --checkcomplete --vgonline --udevoutput --journal=output $env{DEVNAME}" -# ENV{LVM_VG_NAME_COMPLETE}=="?*", RUN+="/usr/bin/systemd-run -r --no-block --property DefaultDependencies=no --unit lvm-activate-$env{LVM_VG_NAME_COMPLETE} lvm vgchange -aay --nohints $env{LVM_VG_NAME_COMPLETE}" -ENV{LVM_VG_NAME_COMPLETE}=="?*", RUN+="/usr/sbin/lvm vgchange -aay --nohints $env{LVM_VG_NAME_COMPLETE}" -GOTO="lvm_end" - -LABEL="lvm_end" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/69-md-clustered-confirm-device.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/69-md-clustered-confirm-device.rules" deleted file mode 100644 index fcc2e235..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/69-md-clustered-confirm-device.rules" +++ /dev/null @@ -1,21 +0,0 @@ -# do not edit this file, it will be overwritten on update - -SUBSYSTEM!="block", GOTO="clustermd_end" - -# handle md arrays -KERNEL!="md*", GOTO="clustermd_end" -ENV{DEVTYPE}!="disk", GOTO="clustermd_end" -ACTION!="change", GOTO="clustermd_end" -ENV{EVENT}!="ADD_DEVICE", GOTO="clustermd_end" -ENV{DEVICE_UUID}!="?*", GOTO="clustermd_end" -ENV{RAID_DISK}!="?*", GOTO="clustermd_end" - -# Based on the received UUID, node confirms the device if -# it is found by blkid, otherwise the node reports it is -# missing. -PROGRAM="/usr/sbin/blkid -o device -t UUID_SUB=$env{DEVICE_UUID}", ENV{.md.newdevice} = "$result" - -ENV{.md.newdevice}!="", RUN+="/usr/sbin/mdadm --manage $env{DEVNAME} --cluster-confirm $env{RAID_DISK}:$env{.md.newdevice}" -ENV{.md.newdevice}=="", RUN+="/usr/sbin/mdadm --manage $env{DEVNAME} --cluster-confirm $env{RAID_DISK}:missing" - -LABEL="clustermd_end" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/70-camera.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/70-camera.rules" deleted file mode 100644 index e30db76a..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/70-camera.rules" +++ /dev/null @@ -1,9 +0,0 @@ -# do not edit this file, it will be overwritten on update - -ACTION=="remove", GOTO="camera_end" - -SUBSYSTEM=="video4linux", ENV{ID_BUS}="usb" , \ - IMPORT{builtin}=="hwdb 'camera:usb:v$env{ID_VENDOR_ID}p$env{ID_MODEL_ID}:name:$attr{name}:'", \ - GOTO="camera_end" - -LABEL="camera_end" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/70-joystick.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/70-joystick.rules" deleted file mode 100644 index 2d436bd0..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/70-joystick.rules" +++ /dev/null @@ -1,12 +0,0 @@ -# do not edit this file, it will be overwritten on update - -ACTION=="remove", GOTO="joystick_end" -ENV{ID_INPUT_JOYSTICK}=="", GOTO="joystick_end" -KERNEL!="event*", GOTO="joystick_end" - -# joystick::vp:name::* -KERNELS=="input*", ENV{ID_BUS}!="", \ - IMPORT{builtin}=="hwdb 'joystick:$env{ID_BUS}:v$attr{id/vendor}p$attr{id/product}:name:$attr{name}:'", \ - GOTO="joystick_end" - -LABEL="joystick_end" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/70-memory.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/70-memory.rules" deleted file mode 100644 index 88b3e81f..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/70-memory.rules" +++ /dev/null @@ -1,8 +0,0 @@ -# do not edit this file, it will be overwritten on update - -ACTION=="remove", GOTO="memory_end" -SUBSYSTEM!="dmi", GOTO="memory_end" - -IMPORT{program}=="dmi_memory_id" - -LABEL="memory_end" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/70-mouse.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/70-mouse.rules" deleted file mode 100644 index 69a983fb..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/70-mouse.rules" +++ /dev/null @@ -1,18 +0,0 @@ -# do not edit this file, it will be overwritten on update - -ACTION=="remove", GOTO="mouse_end" -KERNEL!="event*", GOTO="mouse_end" -ENV{ID_INPUT_MOUSE}=="", GOTO="mouse_end" - -# mouse::vp:name::* -KERNELS=="input*", ENV{ID_BUS}=="usb", \ - IMPORT{builtin}=="hwdb 'mouse:$env{ID_BUS}:v$attr{id/vendor}p$attr{id/product}:name:$attr{name}:'", \ - GOTO="mouse_end" -KERNELS=="input*", ENV{ID_BUS}=="bluetooth", \ - IMPORT{builtin}=="hwdb 'mouse:$env{ID_BUS}:v$attr{id/vendor}p$attr{id/product}:name:$attr{name}:'", \ - GOTO="mouse_end" -DRIVERS=="psmouse", SUBSYSTEMS=="serio", \ - IMPORT{builtin}=="hwdb 'mouse:ps2::name:$attr{device/name}:'", \ - GOTO="mouse_end" - -LABEL="mouse_end" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/70-power-switch.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/70-power-switch.rules" deleted file mode 100644 index ff2f63db..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/70-power-switch.rules" +++ /dev/null @@ -1,6 +0,0 @@ -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" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/70-touchpad.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/70-touchpad.rules" deleted file mode 100644 index e16c6cfb..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/70-touchpad.rules" +++ /dev/null @@ -1,13 +0,0 @@ -# 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::vp: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" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/70-uaccess.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/70-uaccess.rules" deleted file mode 100644 index e66a0634..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/70-uaccess.rules" +++ /dev/null @@ -1,83 +0,0 @@ -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" - -# Webcams, frame grabber, TV cards -SUBSYSTEM=="video4linux", TAG+="uaccess" -SUBSYSTEM=="dvb", TAG+="uaccess" -SUBSYSTEM=="media", TAG+="uaccess" - -# industrial cameras, some webcams, camcorders, set-top boxes, TV sets, audio devices, and more -SUBSYSTEM=="firewire", TEST=="units", ENV{IEEE1394_UNIT_FUNCTION_MIDI}=="1", TAG+="uaccess" -SUBSYSTEM=="firewire", TEST=="units", ENV{IEEE1394_UNIT_FUNCTION_AUDIO}=="1", TAG+="uaccess" -SUBSYSTEM=="firewire", TEST=="units", ENV{IEEE1394_UNIT_FUNCTION_VIDEO}=="1", 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" - -# Protocol analyzers -ENV{ID_SIGNAL_ANALYZER}=="?*", ENV{DEVTYPE}=="usb_device", TAG+="uaccess" -ENV{ID_SIGNAL_ANALYZER}=="?*", KERNEL=="ttyACM[0-9]*", TAG+="uaccess" - -# rfkill / radio killswitches -KERNEL=="rfkill", SUBSYSTEM=="misc", TAG+="uaccess" - -# AV production controllers -# Most of these devices use HID for the knobs, faders, buttons, encoders, and jog wheels. -SUBSYSTEM=="hidraw", ENV{ID_AV_PRODUCTION_CONTROLLER}=="1", TAG+="uaccess" - -# Some devices use vendor defined protocols on USB Bulk endpoints for controllers. -# Other devices transfer graphics to screens on the device through USB Bulk endpoints. -# This also allows accessing HID devices with the libusb backend of hidapi. -SUBSYSTEM=="usb", ENV{ID_AV_PRODUCTION_CONTROLLER}=="1", TAG+="uaccess" - -LABEL="uaccess_end" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/71-seat.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/71-seat.rules" deleted file mode 100644 index 68d8a93e..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/71-seat.rules" +++ /dev/null @@ -1,70 +0,0 @@ -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" - -# Assign keyboard and LCD backlights to the seat -SUBSYSTEM=="leds", TAG+="seat" -SUBSYSTEM=="backlight", TAG+="seat" - -# Allow efifb / uvesafb to be a master if KMS is disabled -SUBSYSTEM=="graphics", KERNEL=="fb[0-9]", IMPORT{cmdline}=="nomodeset", TAG+="master-of-seat" - -# Allow any PCI graphics device to be a master and synthesize a seat if KMS -# is disabled and the kernel doesn't have a driver that would work with this device. -SUBSYSTEM=="pci", ENV{ID_PCI_CLASS_FROM_DATABASE}=="Display controller", \ - ENV{DRIVER}=="", IMPORT{cmdline}=="nomodeset", TAG+="seat", TAG+="master-of-seat" - -# Synthesize a seat for graphic devices without DRM and that fall back to fb -# device instead. Such HWs are listed in hwdb. -SUBSYSTEM=="graphics", KERNEL=="fb[0-9]*", ATTRS{modalias}=="?*", IMPORT{builtin}=="hwdb fb:$attr{modalias}" -ENV{ID_TAG_MASTER_OF_SEAT}=="1", TAG+="master-of-seat" - -SUBSYSTEM=="drm", KERNEL=="card[0-9]*", TAG+="seat", TAG+="master-of-seat" - -# Allow individual USB ports to be assigned to a seat -SUBSYSTEM=="usb", ATTR{bDeviceClass}=="00", TAG+="seat" - -# Allow USB hubs (and all downstream ports) to be assigned to a 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" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/73-idrac.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/73-idrac.rules" deleted file mode 100644 index d67fc425..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/73-idrac.rules" +++ /dev/null @@ -1,6 +0,0 @@ -# do not edit this file, it will be overwritten on update - -# On Dell PowerEdge systems, the iDRAC7 and later support a USB Virtual NIC -# with terminates in the iDRAC. Help identify this with 'idrac' - -ACTION=="add", SUBSYSTEM=="net", SUBSYSTEMS=="usb", ATTRS{idVendor}=="413c", ATTRS{idProduct}=="a102", NAME="idrac" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/73-seat-late.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/73-seat-late.rules" deleted file mode 100644 index 8f88dce3..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/73-seat-late.rules" +++ /dev/null @@ -1,9 +0,0 @@ -ACTION=="remove", GOTO="seat_late_end" - -ENV{ID_SEAT}=="", ENV{ID_AUTOSEAT}=="1", ENV{ID_FOR_SEAT}!="", ENV{ID_SEAT}="seat-$env{ID_FOR_SEAT}" -ENV{ID_SEAT}=="", IMPORT{parent}=="ID_SEAT" - -ENV{ID_SEAT}!="", TAG+="$env{ID_SEAT}" -TAG=="uaccess", ENV{MAJOR}!="", RUN{builtin}+="uaccess" - -LABEL="seat_late_end" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/75-net-description.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/75-net-description.rules" deleted file mode 100644 index 14fd2eb2..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/75-net-description.rules" +++ /dev/null @@ -1,14 +0,0 @@ -# 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" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/75-probe_mtd.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/75-probe_mtd.rules" deleted file mode 100644 index e42f63e7..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/75-probe_mtd.rules" +++ /dev/null @@ -1,7 +0,0 @@ -# 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" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/75-rdma-description.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/75-rdma-description.rules" deleted file mode 100644 index 17fef075..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/75-rdma-description.rules" +++ /dev/null @@ -1,43 +0,0 @@ -# This is a version of net-description.rules for /sys/class/infiniband devices - -ACTION=="remove", GOTO="rdma_description_end" -SUBSYSTEM!="infiniband", GOTO="rdma_description_end" - -# NOTE: DRIVERS searches up the sysfs path to find the driver that is bound to -# the PCI/etc device that the RDMA device is linked to. This is not the kernel -# driver that is supplying the RDMA device (eg as seen in ID_NET_DRIVER) - -# FIXME: with kernel support we could actually detect the protocols the RDMA -# driver itself supports, this is a work around for lack of that support. -# In future we could do this with a udev IMPORT{program} helper program -# that extracted the ID information from the RDMA netlink. - -# Hardware that supports InfiniBand -DRIVERS=="ib_mthca", ENV{ID_RDMA_INFINIBAND}="1" -DRIVERS=="mlx4_core", ENV{ID_RDMA_INFINIBAND}="1" -DRIVERS=="mlx5_core", ENV{ID_RDMA_INFINIBAND}="1" -DRIVERS=="ib_qib", ENV{ID_RDMA_INFINIBAND}="1" - -# Hardware that supports OPA -DRIVERS=="hfi1", ENV{ID_RDMA_OPA}="1" - -# Hardware that supports iWarp -DRIVERS=="cxgb4", ENV{ID_RDMA_IWARP}="1" -DRIVERS=="i40e", ENV{ID_RDMA_IWARP}="1" - -# Hardware that supports RoCE -DRIVERS=="be2net", ENV{ID_RDMA_ROCE}="1" -DRIVERS=="bnxt_en", ENV{ID_RDMA_ROCE}="1" -DRIVERS=="hns", ENV{ID_RDMA_ROCE}="1" -DRIVERS=="mlx4_core", ENV{ID_RDMA_ROCE}="1" -DRIVERS=="mlx5_core", ENV{ID_RDMA_ROCE}="1" -DRIVERS=="qede", ENV{ID_RDMA_ROCE}="1" -DRIVERS=="vmw_pvrdma", ENV{ID_RDMA_ROCE}="1" -DEVPATH=="*/infiniband/rxe*", ATTR{parent}=="*", ENV{ID_RDMA_ROCE}="1" - -# Setup the usual ID information so that systemd will display a sane name for -# the RDMA device units. -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="rdma_description_end" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/78-sound-card.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/78-sound-card.rules" deleted file mode 100644 index 1390dbc2..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/78-sound-card.rules" +++ /dev/null @@ -1,96 +0,0 @@ -# do not edit this file, it will be overwritten on update - -SUBSYSTEM!="sound", GOTO="sound_end" - -ACTION=="add|change", KERNEL=="controlC*", ATTR{../uevent}="change" -ACTION!="change", GOTO="sound_end" - -# Ok, we probably need a little explanation here for what the two lines above -# are good for. -# -# The story goes like this: when ALSA registers a new sound card it emits a -# series of 'add' events to userspace, for the main card device and for all the -# child device nodes that belong to it. udev relays those to applications, -# however only maintains the order between father and child, but not between -# the siblings. The control device node creation can be used as synchronization -# point. All other devices that belong to a card are created in the kernel -# before it. However unfortunately due to the fact that siblings are forwarded -# out of order by udev this fact is lost to applications. -# -# OTOH before an application can open a device it needs to make sure that all -# its device nodes are completely created and set up. -# -# As a workaround for this issue we have added the udev rule above which will -# generate a 'change' event on the main card device from the 'add' event of the -# card's control device. Due to the ordering semantics of udev this event will -# only be relayed after all child devices have finished processing properly. -# When an application needs to listen for appearing devices it can hence look -# for 'change' events only, and ignore the actual 'add' events. -# -# When the application is initialized at the same time as a device is plugged -# in it may need to figure out if the 'change' event has already been triggered -# or not for a card. To find that out we store the flag environment variable -# SOUND_INITIALIZED on the device which simply tells us if the card 'change' -# event has already been processed. - -KERNEL!="card*", GOTO="sound_end" - -ENV{SOUND_INITIALIZED}="1" - -IMPORT{builtin}=="hwdb" -SUBSYSTEMS=="usb", IMPORT{builtin}=="usb_id" -SUBSYSTEMS=="usb", GOTO="skip_pci" - -SUBSYSTEMS=="firewire", ATTRS{guid}=="?*", \ - ENV{ID_BUS}="firewire", ENV{ID_SERIAL}="$attr{guid}", ENV{ID_SERIAL_SHORT}="$attr{guid}", \ - ENV{ID_VENDOR_ID}="$attr{vendor}", ENV{ID_MODEL_ID}="$attr{model}", \ - ENV{ID_VENDOR}="$attr{vendor_name}", ENV{ID_MODEL}="$attr{model_name}" -SUBSYSTEMS=="firewire", GOTO="skip_pci" - -SUBSYSTEMS=="pci", ENV{ID_BUS}="pci", ENV{ID_VENDOR_ID}="$attr{vendor}", ENV{ID_MODEL_ID}="$attr{device}" -SUBSYSTEMS=="pci", GOTO="skip_pci" - -# If we reach here, the device nor any of its parents are USB/PCI/firewire bus devices. -# If we now find a parent that is a platform device, assume that we're working with -# an internal sound card. -SUBSYSTEMS=="platform", ENV{SOUND_FORM_FACTOR}="internal", GOTO="sound_end" - -LABEL="skip_pci" - -# Define ID_ID if ID_BUS and ID_SERIAL are set. This will work for both -# USB and firewire. -ENV{ID_SERIAL}=="?*", ENV{ID_USB_INTERFACE_NUM}=="?*", ENV{ID_ID}="$env{ID_BUS}-$env{ID_SERIAL}-$env{ID_USB_INTERFACE_NUM}" -ENV{ID_SERIAL}=="?*", ENV{ID_USB_INTERFACE_NUM}=="", ENV{ID_ID}="$env{ID_BUS}-$env{ID_SERIAL}" - -IMPORT{builtin}=="path_id" - -# The values used here for $SOUND_FORM_FACTOR and $SOUND_CLASS should be kept -# in sync with those defined for PulseAudio's src/pulse/proplist.h -# PA_PROP_DEVICE_FORM_FACTOR, PA_PROP_DEVICE_CLASS properties. - -# If the first PCM device of this card has the pcm class 'modem', then the card is a modem -ATTR{pcmC%nD0p/pcm_class}=="modem", ENV{SOUND_CLASS}="modem", GOTO="sound_end" - -# Identify cards on the internal PCI bus as internal -SUBSYSTEMS=="pci", DEVPATH=="*/0000:00:??.?/sound/*", ENV{SOUND_FORM_FACTOR}="internal", GOTO="sound_end" - -# Devices that also support Image/Video interfaces are most likely webcams -SUBSYSTEMS=="usb", ENV{ID_USB_INTERFACES}=="*:0e????:*", ENV{SOUND_FORM_FACTOR}="webcam", GOTO="sound_end" - -# Matching on the model strings is a bit ugly, I admit -ENV{ID_MODEL}=="*[Ss]peaker*", ENV{SOUND_FORM_FACTOR}="speaker", GOTO="sound_end" -ENV{ID_MODEL_FROM_DATABASE}=="*[Ss]peaker*", ENV{SOUND_FORM_FACTOR}="speaker", GOTO="sound_end" - -ENV{ID_MODEL}=="*[Hh]eadphone*", ENV{SOUND_FORM_FACTOR}="headphone", GOTO="sound_end" -ENV{ID_MODEL_FROM_DATABASE}=="*[Hh]eadphone*", ENV{SOUND_FORM_FACTOR}="headphone", GOTO="sound_end" - -ENV{ID_MODEL}=="*[Hh]eadset*", ENV{SOUND_FORM_FACTOR}="headset", GOTO="sound_end" -ENV{ID_MODEL_FROM_DATABASE}=="*[Hh]eadset*", ENV{SOUND_FORM_FACTOR}="headset", GOTO="sound_end" - -ENV{ID_MODEL}=="*[Hh]andset*", ENV{SOUND_FORM_FACTOR}="handset", GOTO="sound_end" -ENV{ID_MODEL_FROM_DATABASE}=="*[Hh]andset*", ENV{SOUND_FORM_FACTOR}="handset", GOTO="sound_end" - -ENV{ID_MODEL}=="*[Mm]icrophone*", ENV{SOUND_FORM_FACTOR}="microphone", GOTO="sound_end" -ENV{ID_MODEL_FROM_DATABASE}=="*[Mm]icrophone*", ENV{SOUND_FORM_FACTOR}="microphone", GOTO="sound_end" - -LABEL="sound_end" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/80-drivers.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/80-drivers.rules" deleted file mode 100644 index 4bf942f3..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/80-drivers.rules" +++ /dev/null @@ -1,13 +0,0 @@ -# do not edit this file, it will be overwritten on update - -ACTION!="add", GOTO="drivers_end" - -ENV{MODALIAS}=="?*", RUN{builtin}+="kmod load" -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" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/80-net-setup-link.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/80-net-setup-link.rules" deleted file mode 100644 index f80d23fb..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/80-net-setup-link.rules" +++ /dev/null @@ -1,13 +0,0 @@ -# do not edit this file, it will be overwritten on update - -SUBSYSTEM!="net", GOTO="net_setup_link_end" - -IMPORT{builtin}=="path_id" - -ACTION=="remove", 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" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/80-tpm-udev.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/80-tpm-udev.rules" deleted file mode 100644 index e023629a..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/80-tpm-udev.rules" +++ /dev/null @@ -1,4 +0,0 @@ -# tpm devices can only be accessed by the tss user but the tss -# group members can access tpmrm devices -KERNEL=="tpm[0-9]*", TAG+="systemd", MODE="0660", OWNER="tss" -KERNEL=="tpmrm[0-9]*", TAG+="systemd", MODE="0660", OWNER="tss", GROUP="tss" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/80-udisks2.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/80-udisks2.rules" deleted file mode 100644 index 0a5ba928..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/80-udisks2.rules" +++ /dev/null @@ -1,187 +0,0 @@ -# This file contains udev rules for udisks 2.x -# -# Do not edit this file, it will be overwritten on updates -# - -# ------------------------------------------------------------------------ -# Probing -# ------------------------------------------------------------------------ - -# Skip probing if not a block device or if requested by other rules -# -SUBSYSTEM!="block", GOTO="udisks_probe_end" -ENV{DM_MULTIPATH_DEVICE_PATH}=="1", GOTO="udisks_probe_end" -ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}=="?*", GOTO="udisks_probe_end" - -# MD-RAID (aka Linux Software RAID) members -# -# TODO: file bug against mdadm(8) to have --export-prefix option that can be used with e.g. UDISKS_MD_MEMBER -# -SUBSYSTEM=="block", ENV{ID_FS_USAGE}=="raid", ENV{ID_FS_TYPE}=="linux_raid_member", ENV{UDISKS_MD_MEMBER_LEVEL}=="", IMPORT{program}=="/bin/sh -c '/sbin/mdadm --examine --export $tempnode | /bin/sed s/^MD_/UDISKS_MD_MEMBER_/g'" - -SUBSYSTEM=="block", KERNEL=="md*", ENV{DEVTYPE}!="partition", IMPORT{program}=="/bin/sh -c '/sbin/mdadm --detail --export $tempnode | /bin/sed s/^MD_/UDISKS_MD_/g'" - -LABEL="udisks_probe_end" - -# ------------------------------------------------------------------------ -# Tag floppy drives since they need special care - -# PC floppy drives -# -KERNEL=="fd*", ENV{ID_DRIVE_FLOPPY}="1" - -# USB floppy drives -# -SUBSYSTEMS=="usb", ATTRS{bInterfaceClass}=="08", ATTRS{bInterfaceSubClass}=="04", ENV{ID_DRIVE_FLOPPY}="1" - -# ATA Zip drives -# -ENV{ID_VENDOR}=="*IOMEGA*", ENV{ID_MODEL}=="*ZIP*", ENV{ID_DRIVE_FLOPPY_ZIP}="1" - -# MMC/SD: import parent MMC_TYPE -KERNEL=="mmcblk[0-9]*", SUBSYSTEMS=="mmc", ENV{DEVTYPE}=="disk", IMPORT{parent}=="MMC_TYPE" -KERNEL=="mmcblk[0-9]*", SUBSYSTEMS=="mmc", ENV{DEVTYPE}=="disk", ENV{MMC_TYPE}=="MMC", ENV{ID_DRIVE_FLASH_MMC}="1", ENV{ID_DRIVE_MEDIA_FLASH_MMC}="1" -# TODO: figure out if the drive supports SD, SDHC or SDXC and what the current -# kind of media is - right now we just assume SD -KERNEL=="mmcblk[0-9]*", SUBSYSTEMS=="mmc", ENV{DEVTYPE}=="disk", ENV{MMC_TYPE}=="SD", ENV{ID_DRIVE_FLASH_SD}="1", ENV{ID_DRIVE_MEDIA_FLASH_SD}="1" -KERNEL=="mmcblk[0-9]*", SUBSYSTEMS=="mmc", ENV{DEVTYPE}=="disk", ENV{MMC_TYPE}=="SDIO", ENV{ID_DRIVE_FLASH_SDIO}="1", ENV{ID_DRIVE_MEDIA_FLASH_SDIO}="1" -KERNEL=="mmcblk[0-9]*", SUBSYSTEMS=="mmc", ENV{DEVTYPE}=="disk", ENV{MMC_TYPE}=="SDcombo", ENV{ID_DRIVE_FLASH_SD_COMBO}="1", ENV{ID_DRIVE_MEDIA_FLASH_SD}="1", ENV{ID_DRIVE_MEDIA_FLASH_SDIO}="1" -# compatibility fallback in case of an unavailable MMC_TYPE attr -KERNEL=="mmcblk[0-9]*", SUBSYSTEMS=="mmc", ENV{DEVTYPE}=="disk", ENV{MMC_TYPE}=="", ENV{ID_DRIVE_FLASH_SD}="1", ENV{ID_DRIVE_MEDIA_FLASH_SD}="1" -# import ID_SERIAL and related for "mmcblk_boot" devices from its parent -KERNEL=="mmcblk[0-9]boot[0-9]*", SUBSYSTEMS=="mmc", ENV{DEVTYPE}=="disk", IMPORT{parent}=="ID_*" -# ditto for memstick -KERNEL=="msblk[0-9]|mspblk[0-9]", SUBSYSTEMS=="memstick", ENV{DEVTYPE}=="disk", ENV{ID_DRIVE_FLASH_MS}="1", ENV{ID_DRIVE_MEDIA_FLASH_MS}="1" - -# TODO: maybe automatically convert udisks1 properties to udisks2 ones? -# (e.g. UDISKS_PRESENTATION_HIDE -> UDISKS_IGNORE) - -# ------------------------------------------------------------------------ -# ------------------------------------------------------------------------ -# ------------------------------------------------------------------------ -# Whitelist for tagging drives with the property media type. -# TODO: figure out where to store this database - -SUBSYSTEMS=="usb", ATTRS{idVendor}=="050d", ATTRS{idProduct}=="0248", ENV{ID_INSTANCE}=="0:0", ENV{ID_DRIVE_FLASH_CF}="1" -SUBSYSTEMS=="usb", ATTRS{idVendor}=="050d", ATTRS{idProduct}=="0248", ENV{ID_INSTANCE}=="0:1", ENV{ID_DRIVE_FLASH_MS}="1" -SUBSYSTEMS=="usb", ATTRS{idVendor}=="050d", ATTRS{idProduct}=="0248", ENV{ID_INSTANCE}=="0:2", ENV{ID_DRIVE_FLASH_SM}="1" -SUBSYSTEMS=="usb", ATTRS{idVendor}=="050d", ATTRS{idProduct}=="0248", ENV{ID_INSTANCE}=="0:3", ENV{ID_DRIVE_FLASH_SD}="1" - -SUBSYSTEMS=="usb", ATTRS{idVendor}=="05e3", ATTRS{idProduct}=="070e", ENV{ID_INSTANCE}=="0:0", ENV{ID_DRIVE_FLASH_CF}="1" -SUBSYSTEMS=="usb", ATTRS{idVendor}=="05e3", ATTRS{idProduct}=="070e", ENV{ID_INSTANCE}=="0:1", ENV{ID_DRIVE_FLASH_SM}="1" -SUBSYSTEMS=="usb", ATTRS{idVendor}=="05e3", ATTRS{idProduct}=="070e", ENV{ID_INSTANCE}=="0:2", ENV{ID_DRIVE_FLASH_SD}="1" -SUBSYSTEMS=="usb", ATTRS{idVendor}=="05e3", ATTRS{idProduct}=="070e", ENV{ID_INSTANCE}=="0:3", ENV{ID_DRIVE_FLASH_MS}="1" - -# APPLE SD Card Reader (MacbookPro5,4) -# -SUBSYSTEMS=="usb", ATTRS{idVendor}=="05ac", ATTRS{idProduct}=="8403", ENV{ID_DRIVE_FLASH_SD}="1" - -# Realtek card readers -DRIVERS=="rts_pstor", ENV{ID_DRIVE_FLASH_SD}="1" -DRIVERS=="rts5229", ENV{ID_DRIVE_FLASH_SD}="1" - -# Lexar Dual Slot USB 3.0 Reader Professional -SUBSYSTEMS=="usb", ENV{ID_VENDOR_ID}=="05dc",ENV{ID_MODEL_ID}=="b049", ENV{ID_INSTANCE}=="0:0", ENV{ID_DRIVE_FLASH_CF}="1" -SUBSYSTEMS=="usb", ENV{ID_VENDOR_ID}=="05dc",ENV{ID_MODEL_ID}=="b049", ENV{ID_INSTANCE}=="0:1", ENV{ID_DRIVE_FLASH_SD}="1" - -# Transcend USB 3.0 Multi-Card Reader (TS-RDF8K) -SUBSYSTEMS=="usb", ENV{ID_VENDOR_ID}=="8564",ENV{ID_MODEL_ID}=="4000", ENV{ID_INSTANCE}=="0:0", ENV{ID_DRIVE_FLASH_CF}="1" -SUBSYSTEMS=="usb", ENV{ID_VENDOR_ID}=="8564",ENV{ID_MODEL_ID}=="4000", ENV{ID_INSTANCE}=="0:1", ENV{ID_DRIVE_FLASH_SD}="1" -SUBSYSTEMS=="usb", ENV{ID_VENDOR_ID}=="8564",ENV{ID_MODEL_ID}=="4000", ENV{ID_INSTANCE}=="0:2", ENV{ID_DRIVE_FLASH_MS}="1" - -# Common theme -# -SUBSYSTEMS=="usb", ENV{ID_MODEL}=="*Reader*SD*", ENV{ID_DRIVE_FLASH_SD}="1" -SUBSYSTEMS=="usb", ENV{ID_MODEL}=="*CF_Reader*", ENV{ID_DRIVE_FLASH_CF}="1" -SUBSYSTEMS=="usb", ENV{ID_MODEL}=="*SM_Reader*", ENV{ID_DRIVE_FLASH_SM}="1" -SUBSYSTEMS=="usb", ENV{ID_MODEL}=="*MS_Reader*", ENV{ID_DRIVE_FLASH_MS}="1" - -# USB stick / thumb drives -# -SUBSYSTEMS=="usb", ENV{ID_VENDOR}=="*Kingston*", ENV{ID_MODEL}=="*DataTraveler*", ENV{ID_DRIVE_THUMB}="1" -SUBSYSTEMS=="usb", ENV{ID_VENDOR}=="*SanDisk*", ENV{ID_MODEL}=="*Cruzer*", ENV{ID_CDROM}!="1", ENV{ID_DRIVE_THUMB}="1" -SUBSYSTEMS=="usb", ENV{ID_VENDOR}=="HP", ENV{ID_MODEL}=="*v125w*", ENV{ID_DRIVE_THUMB}="1" -SUBSYSTEMS=="usb", ENV{ID_VENDOR_ID}=="13fe", ENV{ID_MODEL}=="*Patriot*", ENV{ID_DRIVE_THUMB}="1" -SUBSYSTEMS=="usb", ENV{ID_VENDOR}=="*JetFlash*", ENV{ID_MODEL}=="*Transcend*", ENV{ID_DRIVE_THUMB}="1" - -# SD-Card reader in Chromebook Pixel -SUBSYSTEMS=="usb", ENV{ID_VENDOR_ID}=="05e3", ENV{ID_MODEL_ID}=="0727", ENV{ID_DRIVE_FLASH_SD}="1" - -# ------------------------------------------------------------------------ -# ------------------------------------------------------------------------ -# ------------------------------------------------------------------------ -# Devices which should not be display in the user interface -# -# (note that RAID/LVM members are not normally shown in an user -# interface so setting UDISKS_IGNORE at first does not seem to achieve -# anything. However it helps for RAID/LVM members that are encrypted -# using LUKS. See bug #51439.) - -# Apple Bootstrap partitions -ENV{ID_PART_ENTRY_SCHEME}=="mac", ENV{ID_PART_ENTRY_TYPE}=="Apple_Bootstrap", ENV{UDISKS_IGNORE}="1" - -# Apple Boot partitions -ENV{ID_PART_ENTRY_SCHEME}=="gpt", ENV{ID_PART_ENTRY_TYPE}=="426f6f74-0000-11aa-aa11-00306543ecac", ENV{UDISKS_IGNORE}="1" - -# special DOS partition types (EFI, hidden, etc.) and RAID/LVM -# see http://www.win.tue.nl/~aeb/partitions/partition_types-1.html -ENV{ID_PART_ENTRY_SCHEME}=="dos", \ - ENV{ID_PART_ENTRY_TYPE}=="0x0|0x11|0x12|0x14|0x16|0x17|0x1b|0x1c|0x1e|0x27|0x3d|0x84|0x8d|0x8e|0x90|0x91|0x92|0x93|0x97|0x98|0x9a|0x9b|0xbb|0xc2|0xc3|0xdd|0xef|0xfd", \ - ENV{UDISKS_IGNORE}="1" - -# special GUID-identified partition types (EFI System Partition, BIOS Boot partition, RAID/LVM) -# see http://en.wikipedia.org/wiki/GUID_Partition_Table#Partition_type_GUIDs -ENV{ID_PART_ENTRY_SCHEME}=="gpt", \ - ENV{ID_PART_ENTRY_TYPE}=="c12a7328-f81f-11d2-ba4b-00a0c93ec93b|21686148-6449-6e6f-744e-656564454649|a19d880f-05fc-4d3b-a006-743f0f84911e|e6d6d379-f507-44c2-a23c-238f2a3df928|e3c9e316-0b5c-4db8-817d-f92df00215ae|de94bba4-06d1-4d40-a16a-bfd50179d6ac", \ - ENV{UDISKS_IGNORE}="1" - -# special Extended Boot Loader partition (XBOOTLDR) -# see https://systemd.io/BOOT_LOADER_SPECIFICATION/ -ENV{ID_PART_ENTRY_SCHEME}=="gpt", \ - ENV{ID_PART_ENTRY_TYPE}=="bc13c2ff-59e6-4262-a352-b275fd6f7172", \ - ENV{UDISKS_IGNORE}="1" - -# ZFS member partitions -ENV{ID_PART_ENTRY_SCHEME}=="gpt", \ - ENV{ID_FS_TYPE}=="zfs_member", ENV{ID_PART_ENTRY_TYPE}=="6a898cc3-1dd2-11b2-99a6-080020736631", \ - ENV{UDISKS_IGNORE}="1" - -# MAC recovery/tool partitions/devices which are useless on Linux -ENV{ID_PART_ENTRY_SCHEME}=="mac", \ - ENV{ID_CDROM}=="?*", ENV{ID_FS_TYPE}=="udf", ENV{ID_FS_LABEL}=="WD*SmartWare", \ - ENV{UDISKS_IGNORE}="1" -ENV{ID_PART_TABLE_TYPE}=="mac", \ - ENV{ID_CDROM}=="?*", ENV{ID_FS_TYPE}=="udf", ENV{ID_FS_LABEL}=="WD*SmartWare", \ - ENV{UDISKS_IGNORE}="1" - -# recovery partitions -ENV{ID_FS_TYPE}=="ntfs|vfat", \ - ENV{ID_FS_LABEL}=="Recovery|RECOVERY|Lenovo_Recovery|HP_RECOVERY|Recovery_Partition|DellUtility|DellRestore|IBM_SERVICE|SERVICEV001|SERVICEV002|SYSTEM_RESERVED|System_Reserved|WINRE_DRV|DIAGS|IntelRST", \ - ENV{UDISKS_IGNORE}="1" - -# read-only non-Linux software installer partitions -ENV{ID_VENDOR}=="Sony", ENV{ID_MODEL}=="PRS*Launcher", ENV{UDISKS_IGNORE}="1" - -# non-Linux software -KERNEL=="sr*", ENV{ID_VENDOR}=="SanDisk", ENV{ID_MODEL}=="Cruzer", ENV{ID_FS_LABEL}=="U3_System", ENV{UDISKS_IGNORE}="1" - -# Virtual Windows tools installation on Asus Zendisk (0b05:17b4) -KERNEL=="sr*", ENV{ID_VENDOR}=="ASMT",ENV{ID_MODEL}=="VirtualCDROM", ENV{ID_FS_LABEL}=="ASUS_+Speed_ZENDISK*", ENV{UDISKS_IGNORE}="1" - -# Virtual Windows tools installation CD on Nokia 7 Plus (2e04:c025) -KERNEL=="sr*", ENV{ID_VENDOR}=="Linux", ENV{ID_MODEL}=="File-CD_Gadget*", ENV{ID_FS_LABEL}=="CDROM*", ATTRS{manufacturer}=="HMD Global", ENV{UDISKS_IGNORE}="1" - -# Content created using isohybrid (typically used on CDs and USB -# sticks for bootable media) is a bit special insofar that the -# interesting content is on a DOS partition with type 0x00* ... which -# is hidden above. So undo this. -# -# See http://mjg59.dreamwidth.org/11285.html for more details -# -# *) This is true only for 64bit images. For 32bit images the type is 0x17 -# (Hidden HPFS/NTFS/exFAT). This is most likely a bug but we still need to -# stop ignoring these. -ENV{ID_PART_TABLE_TYPE}=="dos", ENV{ID_PART_ENTRY_TYPE}=="0x0|0x17", ENV{ID_PART_ENTRY_NUMBER}=="1|2", ENV{ID_FS_TYPE}=="iso9660|udf", ENV{UDISKS_IGNORE}="0" - -# Explicitly ignore ram block devices, they don't work with udev -KERNEL=="ram*", ENV{UDISKS_IGNORE}="1" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/81-net-dhcp.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/81-net-dhcp.rules" deleted file mode 100644 index 2ef25ba0..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/81-net-dhcp.rules" +++ /dev/null @@ -1,14 +0,0 @@ -# do not edit this file, it will be overwritten on update - -ACTION=="remove", GOTO="net_dhcp_end" -SUBSYSTEM!="net", GOTO="net_dhcp_end" - -# Network interfaces requiring DHCPOFFER messages to be broadcast -# must set ID_NET_DHCP_BROADCAST to "1". This property will be -# checked by the networkd DHCP4 client to set the DHCP option - -# s390 ccwgroup interfaces in layer3 mode need broadcast DHCPOFFER -# using the link driver to detect this condition -ENV{ID_NET_DRIVER}=="qeth_l3", ENV{ID_NET_DHCP_BROADCAST}="1" - -LABEL="net_dhcp_end" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/84-nm-drivers.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/84-nm-drivers.rules" deleted file mode 100644 index 519652ac..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/84-nm-drivers.rules" +++ /dev/null @@ -1,12 +0,0 @@ -# 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_drivers_end" -ACTION!="add|change|move", GOTO="nm_drivers_end" - -# Determine ID_NET_DRIVER if there's no ID_NET_DRIVER or DRIVERS (old udev?) -ENV{ID_NET_DRIVER}=="?*", GOTO="nm_drivers_end" -# DRIVERS=="?*", GOTO="nm_drivers_end" -PROGRAM="/bin/sh -c '/usr/sbin/ethtool -i $$1 |/usr/bin/sed -n s/^driver:\ //p' -- $env{INTERFACE}", ENV{ID_NET_DRIVER}="%c" - -LABEL="nm_drivers_end" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/85-nm-unmanaged.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/85-nm-unmanaged.rules" deleted file mode 100644 index eae8d7ce..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/85-nm-unmanaged.rules" +++ /dev/null @@ -1,34 +0,0 @@ -# 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. -ENV{ID_NET_DRIVER}=="veth", 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" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/90-iprutils.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/90-iprutils.rules" deleted file mode 100644 index 1bb5a4a6..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/90-iprutils.rules" +++ /dev/null @@ -1 +0,0 @@ -DRIVERS=="ipr", TAG+="systemd", ENV{SYSTEMD_WANTS}+="iprutils.target" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/90-iwpmd.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/90-iwpmd.rules" deleted file mode 100644 index 5b22ccea..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/90-iwpmd.rules" +++ /dev/null @@ -1 +0,0 @@ -TAG+="systemd", ENV{ID_RDMA_IWARP}=="1", ENV{SYSTEMD_WANTS}+="iwpmd.service" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/90-nm-thunderbolt.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/90-nm-thunderbolt.rules" deleted file mode 100644 index be105fd4..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/90-nm-thunderbolt.rules" +++ /dev/null @@ -1,13 +0,0 @@ -# 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 - -ACTION!="add|change|move", GOTO="nm_thunderbolt_end" - -# Load he thunderbolt-net driver if we a device of type thunderbolt_xdomain -# is added. -SUBSYSTEM=="thunderbolt", ENV{DEVTYPE}=="thunderbolt_xdomain", RUN{builtin}+="kmod load thunderbolt-net" - -# For all thunderbolt network devices, we want to enable link-local configuration -SUBSYSTEM=="net", ENV{ID_NET_DRIVER}=="thunderbolt-net", ENV{NM_AUTO_DEFAULT_LINK_LOCAL_ONLY}="1" - -LABEL="nm_thunderbolt_end" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/90-rdma-hw-modules.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/90-rdma-hw-modules.rules" deleted file mode 100644 index 95eaf720..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/90-rdma-hw-modules.rules" +++ /dev/null @@ -1,46 +0,0 @@ -ACTION=="remove", GOTO="rdma_hw_modules_end" - -SUBSYSTEM!="net", GOTO="rdma_hw_modules_net_end" -# For Ethernet cards with RoCE support -# Automatically load RDMA specific kernel modules when a multi-function device is installed -# These drivers autoload an ethernet driver based on hardware detection and -# need userspace to load the module that has their RDMA component to turn on -# RDMA. - -ENV{ID_NET_DRIVER}=="be2net", RUN{builtin}+="kmod load ocrdma" -ENV{ID_NET_DRIVER}=="bnxt_en", RUN{builtin}+="kmod load bnxt_re" -ENV{ID_NET_DRIVER}=="cxgb4", RUN{builtin}+="kmod load iw_cxgb4" -ENV{ID_NET_DRIVER}=="hns", RUN{builtin}+="kmod load hns_roce" -ENV{ID_NET_DRIVER}=="i40e", RUN{builtin}+="kmod load i40iw" -ENV{ID_NET_DRIVER}=="mlx4_en", RUN{builtin}+="kmod load mlx4_ib" -ENV{ID_NET_DRIVER}=="mlx5_core", RUN{builtin}+="kmod load mlx5_ib" -ENV{ID_NET_DRIVER}=="qede", RUN{builtin}+="kmod load qedr" - -# The user must explicitly load these modules via /etc/modules-load.d/ or otherwise -# rxe - -# enic no longer has a userspace verbs driver, this rule should probably be -# owned by libfabric -ENV{ID_NET_DRIVER}=="enic", RUN{builtin}+="kmod load usnic_verbs" - -# These providers are single function and autoload RDMA automatically based on -# PCI probing -# hfi1verbs -# ipathverbs -# mthca -# vmw_pvrdma - -LABEL="rdma_hw_modules_net_end" - -SUBSYSTEM!="pci", GOTO="rdma_hw_modules_pci_end" -# For InfiniBand cards -# Normally the request_module inside the driver will trigger this, but in case that fails due to -# missing modules in the initrd, trigger it again. HW that doesn't create a netdevice will not -# trigger the net based rules above. - -ENV{DRIVER}=="mlx4_core", RUN{builtin}+="kmod load mlx4_ib" -ENV{DRIVER}=="mlx5_core", RUN{builtin}+="kmod load mlx5_ib" - -LABEL="rdma_hw_modules_pci_end" - -LABEL="rdma_hw_modules_end" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/90-rdma-ulp-modules.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/90-rdma-ulp-modules.rules" deleted file mode 100644 index fbd195a2..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/90-rdma-ulp-modules.rules" +++ /dev/null @@ -1,11 +0,0 @@ -ACTION=="remove", GOTO="rdma_ulp_modules_end" -SUBSYSTEM!="infiniband", GOTO="rdma_ulp_modules_end" - -# Automatically load general RDMA ULP modules when RDMA hardware is installed -TAG+="systemd", ENV{SYSTEMD_WANTS}+="rdma-hw.target" -TAG+="systemd", ENV{ID_RDMA_INFINIBAND}=="1", ENV{SYSTEMD_WANTS}+="rdma-load-modules@infiniband.service" -TAG+="systemd", ENV{ID_RDMA_IWARP}=="1", ENV{SYSTEMD_WANTS}+="rdma-load-modules@iwarp.service" -TAG+="systemd", ENV{ID_RDMA_OPA}=="1", ENV{SYSTEMD_WANTS}+="rdma-load-modules@opa.service" -TAG+="systemd", ENV{ID_RDMA_ROCE}=="1", ENV{SYSTEMD_WANTS}+="rdma-load-modules@roce.service" - -LABEL="rdma_ulp_modules_end" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/90-rdma-umad.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/90-rdma-umad.rules" deleted file mode 100644 index ba7ee613..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/90-rdma-umad.rules" +++ /dev/null @@ -1 +0,0 @@ -SUBSYSTEM=="infiniband_mad", KERNEL=="*umad*", TAG+="systemd", ENV{SYSTEMD_ALIAS}="/sys/subsystem/rdma/devices/$attr{ibdev}:$attr{port}/umad" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/90-vconsole.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/90-vconsole.rules" deleted file mode 100644 index 2e616541..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/90-vconsole.rules" +++ /dev/null @@ -1,3 +0,0 @@ -# Each vtcon keeps its own state of fonts. -# -# ACTION=="add", SUBSYSTEM=="vtconsole", KERNEL=="vtcon*", RUN+="/usr/lib/systemd/systemd-vconsole-setup" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/91-drm-modeset.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/91-drm-modeset.rules" deleted file mode 100644 index f1bb5ece..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/91-drm-modeset.rules" +++ /dev/null @@ -1 +0,0 @@ -KERNEL=="controlD[0-9]*", SUBSYSTEM=="drm", MODE="0600" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/95-dm-notify.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/95-dm-notify.rules" deleted file mode 100644 index d30e4b4f..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/95-dm-notify.rules" +++ /dev/null @@ -1,8 +0,0 @@ -# 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}" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/96-e2scrub.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/96-e2scrub.rules" deleted file mode 100644 index b6dc30b7..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/96-e2scrub.rules" +++ /dev/null @@ -1,2 +0,0 @@ -# Try to hide our fsck snapshots from udev's /dev/disk linking... -ACTION=="add|change", ENV{DM_LV_NAME}=="*.e2scrub", ENV{UDISKS_IGNORE}="1", OPTIONS="link_priority=-100" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/98-kexec.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/98-kexec.rules" deleted file mode 100644 index 8db8946a..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/98-kexec.rules" +++ /dev/null @@ -1,18 +0,0 @@ -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'" - -RUN+="/bin/sh -c '/usr/bin/systemctl is-active kdump.service || exit 0; /usr/lib/udev/kdump-udev-throttler'" - -LABEL="kdump_reload_end" diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/99-systemd.rules" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/99-systemd.rules" deleted file mode 100644 index 53d8a6af..00000000 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/rules.d/99-systemd.rules" +++ /dev/null @@ -1,75 +0,0 @@ -# -#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" -# -## We can't make any conclusions about suspended DM devices so let's just import previous SYSTEMD_READY state and skip other rules -#SUBSYSTEM=="block", ENV{DM_SUSPENDED}=="1", IMPORT{db}=="SYSTEMD_READY", GOTO="systemd_end" -#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" -# -## Explicitly set SYSTEMD_READY=1 for DM devices that don't have it set yet, so that we always have something to import above -#SUBSYSTEM=="block", ENV{DM_UUID}=="?*", ENV{SYSTEMD_READY}=="", ENV{SYSTEMD_READY}="1" -# -## 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. -# -#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", \ -# ENV{SYSTEMD_WANTS}+="bluetooth.target", ENV{SYSTEMD_USER_WANTS}+="bluetooth.target" -# -#ENV{ID_SMARTCARD_READER}=="?*", TAG+="systemd", ENV{SYSTEMD_WANTS}+="smartcard.target", ENV{SYSTEMD_USER_WANTS}+="smartcard.target" -#SUBSYSTEM=="sound", KERNEL=="controlC*", TAG+="systemd", ENV{SYSTEMD_WANTS}+="sound.target", ENV{SYSTEMD_USER_WANTS}+="sound.target" -# -#SUBSYSTEM=="printer", TAG+="systemd", ENV{SYSTEMD_WANTS}+="printer.target", ENV{SYSTEMD_USER_WANTS}+="printer.target" -#SUBSYSTEM=="usb", KERNEL=="lp*", TAG+="systemd", ENV{SYSTEMD_WANTS}+="printer.target", ENV{SYSTEMD_USER_WANTS}+="printer.target" -#SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ENV{ID_USB_INTERFACES}=="*:0701??:*", TAG+="systemd", ENV{SYSTEMD_WANTS}+="printer.target", ENV{SYSTEMD_USER_WANTS}+="printer.target" -# -#SUBSYSTEM=="udc", ACTION=="add", TAG+="systemd", ENV{SYSTEMD_WANTS}+="usb-gadget.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" -# -- Gitee From 27436ec7a7d29b937296d0015c15d2add4b2edc5 Mon Sep 17 00:00:00 2001 From: chenjiayi Date: Mon, 1 Jan 2024 19:40:22 +0800 Subject: [PATCH 07/10] feature(devmaster): add dracut module to install devmaster in initrd The init.sh will replace that from 99base dracut module. --- .../dracut_modules/95devmaster/init.sh | 407 ++++++++++++++++++ .../95devmaster/module-setup.sh | 22 + 2 files changed, 429 insertions(+) create mode 100755 exts/devmaster/dracut_modules/95devmaster/init.sh create mode 100755 exts/devmaster/dracut_modules/95devmaster/module-setup.sh diff --git a/exts/devmaster/dracut_modules/95devmaster/init.sh b/exts/devmaster/dracut_modules/95devmaster/init.sh new file mode 100755 index 00000000..8fcbf48a --- /dev/null +++ b/exts/devmaster/dracut_modules/95devmaster/init.sh @@ -0,0 +1,407 @@ +#!/bin/sh +# +# Licensed under the GPLv2 +# +# Copyright 2008-2010, Red Hat, Inc. +# Harald Hoyer +# Jeremy Katz + +export -p > /tmp/export.orig + +NEWROOT="/sysroot" +[ -d $NEWROOT ] || mkdir -p -m 0755 $NEWROOT + +OLDPATH=$PATH +PATH=/usr/sbin:/usr/bin:/sbin:/bin +export PATH + +# mount some important things +if [ ! -d /proc/self ]; then + if ! mount -t proc -o nosuid,noexec,nodev proc /proc > /dev/null; then + echo "Cannot mount proc on /proc! Compile the kernel with CONFIG_PROC_FS!" + exit 1 + fi +fi + +if [ ! -d /sys/kernel ]; then + if ! mount -t sysfs -o nosuid,noexec,nodev sysfs /sys > /dev/null; then + echo "Cannot mount sysfs on /sys! Compile the kernel with CONFIG_SYSFS!" + exit 1 + fi +fi + +RD_DEBUG="" +. /lib/dracut-lib.sh + +setdebug + +if ! ismounted /dev; then + mount -t devtmpfs -o mode=0755,noexec,nosuid,strictatime devtmpfs /dev > /dev/null +fi + +if ! ismounted /dev; then + echo "Cannot mount devtmpfs on /dev! Compile the kernel with CONFIG_DEVTMPFS!" + exit 1 +fi + +# prepare the /dev directory +[ ! -h /dev/fd ] && ln -s /proc/self/fd /dev/fd > /dev/null 2>&1 +[ ! -h /dev/stdin ] && ln -s /proc/self/fd/0 /dev/stdin > /dev/null 2>&1 +[ ! -h /dev/stdout ] && ln -s /proc/self/fd/1 /dev/stdout > /dev/null 2>&1 +[ ! -h /dev/stderr ] && ln -s /proc/self/fd/2 /dev/stderr > /dev/null 2>&1 + +if ! ismounted /dev/pts; then + mkdir -m 0755 -p /dev/pts + mount -t devpts -o gid=5,mode=620,noexec,nosuid devpts /dev/pts > /dev/null +fi + +if ! ismounted /dev/shm; then + mkdir -m 0755 -p /dev/shm + mount -t tmpfs -o mode=1777,noexec,nosuid,nodev,strictatime tmpfs /dev/shm > /dev/null +fi + +if ! ismounted /run; then + mkdir -m 0755 -p /newrun + if ! str_starts "$(readlink -f /bin/sh)" "/run/"; then + mount -t tmpfs -o mode=0755,noexec,nosuid,nodev,strictatime tmpfs /newrun > /dev/null + else + # the initramfs binaries are located in /run, so don't mount it with noexec + mount -t tmpfs -o mode=0755,nosuid,nodev,strictatime tmpfs /newrun > /dev/null + fi + cp -a /run/* /newrun > /dev/null 2>&1 + mount --move /newrun /run + rm -fr -- /newrun +fi + +if command -v kmod > /dev/null 2> /dev/null; then + kmod static-nodes --format=tmpfiles 2> /dev/null \ + | while read -r type file mode _ _ _ majmin || [ -n "$type" ]; do + type=${type%\!} + case $type in + d) + mkdir -m "$mode" -p "$file" + ;; + c) + mknod -m "$mode" "$file" "$type" "${majmin%:*}" "${majmin#*:}" + ;; + esac + done +fi + +trap "emergency_shell Signal caught!" 0 + +export UDEVRULESD=/run/udev/rules.d +[ -d /run/udev ] || mkdir -p -m 0755 /run/udev +[ -d "$UDEVRULESD" ] || mkdir -p -m 0755 "$UDEVRULESD" + +if [ "$RD_DEBUG" = "yes" ]; then + mkfifo /run/initramfs/loginit.pipe + loginit "$DRACUT_QUIET" < /run/initramfs/loginit.pipe > /dev/console 2>&1 & + exec > /run/initramfs/loginit.pipe 2>&1 +else + exec 0<> /dev/console 1<> /dev/console 2<> /dev/console +fi + +[ -f /usr/lib/initrd-release ] && . /usr/lib/initrd-release +[ -n "$VERSION_ID" ] && info "$NAME-$VERSION_ID" + +source_conf /etc/conf.d + +if getarg "rd.cmdline=ask"; then + echo "Enter additional kernel command line parameter (end with ctrl-d or .)" + while read -r -p "> " ${BASH:+-e} line || [ -n "$line" ]; do + [ "$line" = "." ] && break + echo "$line" >> /etc/cmdline.d/99-cmdline-ask.conf + done +fi + +if ! getargbool 1 'rd.hostonly'; then + [ -f /etc/cmdline.d/99-cmdline-ask.conf ] && mv /etc/cmdline.d/99-cmdline-ask.conf /tmp/99-cmdline-ask.conf + remove_hostonly_files + [ -f /tmp/99-cmdline-ask.conf ] && mv /tmp/99-cmdline-ask.conf /etc/cmdline.d/99-cmdline-ask.conf +fi + +# run scriptlets to parse the command line +make_trace_mem "hook cmdline" '1+:mem' '1+:iomem' '3+:slab' +getarg 'rd.break=cmdline' -d 'rdbreak=cmdline' && emergency_shell -n cmdline "Break before cmdline" +source_hook cmdline + +[ -z "$root" ] && die "No or empty root= argument" +[ -z "$rootok" ] && die "Don't know how to handle 'root=$root'" + +export root rflags fstype netroot NEWROOT + +# pre-udev scripts run before udev starts, and are run only once. +make_trace_mem "hook pre-udev" '1:shortmem' '2+:mem' '3+:slab' +getarg 'rd.break=pre-udev' -d 'rdbreak=pre-udev' && emergency_shell -n pre-udev "Break before pre-udev" +source_hook pre-udev + +UDEV_LOG=err +getargbool 0 rd.udev.info -d -y rdudevinfo && UDEV_LOG=info +getargbool 0 rd.udev.debug -d -y rdudevdebug && UDEV_LOG=debug + +# create /run/udev symlink +source /lib/devmaster/simulate_udev.sh + +# start up udev and trigger cold plugs +# UDEV_LOG=$UDEV_LOG "$systemdutildir"/systemd-udevd --daemon --resolve-names=never +/lib/devmaster/devmaster & + +UDEV_QUEUE_EMPTY="udevadm settle --timeout=0" + +# udevproperty "hookdir=$hookdir" + +make_trace_mem "hook pre-trigger" '1:shortmem' '2+:mem' '3+:slab' +getarg 'rd.break=pre-trigger' -d 'rdbreak=pre-trigger' && emergency_shell -n pre-trigger "Break before pre-trigger" +source_hook pre-trigger + +# devctl does not support reload +# udevadm control --reload > /dev/null 2>&1 || : +udevadm control --exit +/lib/devmaster/devmaster & + +# then the rest +udevadm trigger --type=subsystems --action=add > /dev/null 2>&1 +udevadm trigger --type=devices --action=add > /dev/null 2>&1 + +make_trace_mem "hook initqueue" '1:shortmem' '2+:mem' '3+:slab' +getarg 'rd.break=initqueue' -d 'rdbreak=initqueue' && emergency_shell -n initqueue "Break before initqueue" + +RDRETRY=$(getarg rd.retry -d 'rd_retry=') +RDRETRY=${RDRETRY:-180} +RDRETRY=$((RDRETRY * 2)) +export RDRETRY +main_loop=0 +export main_loop +while :; do + + check_finished && break + + udevsettle + + check_finished && break + + if [ -f "$hookdir"/initqueue/work ]; then + rm -f -- "$hookdir"/initqueue/work + fi + + for job in "$hookdir"/initqueue/*.sh; do + [ -e "$job" ] || break + # shellcheck disable=SC2097 disable=SC1090 disable=SC2098 + job=$job . "$job" + check_finished && break 2 + done + + $UDEV_QUEUE_EMPTY > /dev/null 2>&1 || continue + + for job in "$hookdir"/initqueue/settled/*.sh; do + [ -e "$job" ] || break + # shellcheck disable=SC2097 disable=SC1090 disable=SC2098 + job=$job . "$job" + check_finished && break 2 + done + + $UDEV_QUEUE_EMPTY > /dev/null 2>&1 || continue + + # no more udev jobs and queues empty. + sleep 0.5 + + if [ $main_loop -gt $((2 * RDRETRY / 3)) ]; then + for job in "$hookdir"/initqueue/timeout/*.sh; do + [ -e "$job" ] || break + # shellcheck disable=SC2097 disable=SC1090 disable=SC2098 + job=$job . "$job" + udevadm settle --timeout=0 > /dev/null 2>&1 || main_loop=0 + [ -f "$hookdir"/initqueue/work ] && main_loop=0 + done + fi + + main_loop=$((main_loop + 1)) + [ $main_loop -gt $RDRETRY ] \ + && { + flock -s 9 + emergency_shell "Could not boot." + } 9> /.console_lock +done +unset job +unset queuetriggered +unset main_loop +unset RDRETRY + +# pre-mount happens before we try to mount the root filesystem, +# and happens once. +make_trace_mem "hook pre-mount" '1:shortmem' '2+:mem' '3+:slab' +getarg 'rd.break=pre-mount' -d 'rdbreak=pre-mount' && emergency_shell -n pre-mount "Break before pre-mount" +source_hook pre-mount + +getarg 'rd.break=mount' -d 'rdbreak=mount' && emergency_shell -n mount "Break before mount" +# mount scripts actually try to mount the root filesystem, and may +# be sourced any number of times. As soon as one succeeds, no more are sourced. +_i_mount=0 +while :; do + if ismounted "$NEWROOT"; then + usable_root "$NEWROOT" && break + umount "$NEWROOT" + fi + for f in "$hookdir"/mount/*.sh; do + # shellcheck disable=SC1090 + [ -f "$f" ] && . "$f" + if ismounted "$NEWROOT"; then + usable_root "$NEWROOT" && break + warn "$NEWROOT has no proper rootfs layout, ignoring and removing offending mount hook" + umount "$NEWROOT" + rm -f -- "$f" + fi + done + + _i_mount=$((_i_mount + 1)) + [ $_i_mount -gt 20 ] \ + && { + flock -s 9 + emergency_shell "Can't mount root filesystem" + } 9> /.console_lock +done + +{ + printf "Mounted root filesystem " + while read -r dev mp _ || [ -n "$dev" ]; do [ "$mp" = "$NEWROOT" ] && echo "$dev"; done < /proc/mounts +} | vinfo + +# pre pivot scripts are sourced just before we doing cleanup and switch over +# to the new root. +make_trace_mem "hook pre-pivot" '1:shortmem' '2+:mem' '3+:slab' +getarg 'rd.break=pre-pivot' -d 'rdbreak=pre-pivot' && emergency_shell -n pre-pivot "Break before pre-pivot" +source_hook pre-pivot + +make_trace_mem "hook cleanup" '1:shortmem' '2+:mem' '3+:slab' +# pre pivot cleanup scripts are sourced just before we switch over to the new root. +getarg 'rd.break=cleanup' -d 'rdbreak=cleanup' && emergency_shell -n cleanup "Break before cleanup" +source_hook cleanup + +# By the time we get here, the root filesystem should be mounted. +# Try to find init. +for i in "$(getarg real_init=)" "$(getarg init=)" $(getargs rd.distroinit=) /sbin/init; do + [ -n "$i" ] || continue + + __p="${NEWROOT}/${i}" + if [ -h "$__p" ]; then + # relative links need to be left alone, + # while absolute links need to be resolved and prefixed. + __pt=$(readlink "$__p") + [ "${__pt#/}" = "$__pt" ] || __p="${NEWROOT}/$__pt" + fi + if [ -x "$__p" ]; then + INIT="$i" + break + fi +done + +[ "$INIT" ] || { + echo "Cannot find init!" + echo "Please check to make sure you passed a valid root filesystem!" + emergency_shell +} + +udevadm control --exit +udevadm info --cleanup-db + +debug_off # Turn off debugging for this section + +CAPSH=$(command -v capsh) +SWITCH_ROOT=$(command -v switch_root) + +# unexport some vars +export_n root rflags fstype netroot NEWROOT +unset CMDLINE + +# Clean up the environment +for i in $(export -p); do + i=${i#declare -x} + i=${i#export} + strstr "$i" "=" || continue + i=${i%%=*} + [ -z "$i" ] && continue + case $i in + root | PATH | HOME | TERM | PS4 | RD_*) + : + ;; + *) + unset "$i" + ;; + esac +done +. /tmp/export.orig 2> /dev/null || : +rm -f -- /tmp/export.orig + +initargs="" +read -r CLINE < /proc/cmdline +if getarg init= > /dev/null; then + ignoreargs="console BOOT_IMAGE" + # only pass arguments after init= to the init + CLINE=${CLINE#*init=} + # shellcheck disable=SC2086 + set -- $CLINE + shift # clear out the rest of the "init=" arg + for x in "$@"; do + for s in $ignoreargs; do + [ "${x%%=*}" = "$s" ] && continue 2 + done + initargs="$initargs $x" + done + unset CLINE +else + debug_off # Turn off debugging for this section + # shellcheck disable=SC2086 + set -- $CLINE + for x in "$@"; do + case "$x" in + [0-9] | s | S | single | emergency | auto) + initargs="$initargs $x" + ;; + esac + done +fi +debug_on + +if ! [ -d "$NEWROOT"/run ]; then + NEWRUN=/dev/.initramfs + mkdir -m 0755 -p "$NEWRUN" + mount --rbind /run/initramfs "$NEWRUN" +fi + +wait_for_loginit + +# remove helper symlink +[ -h /dev/root ] && rm -f -- /dev/root + +bv=$(getarg rd.break -d rdbreak) && [ -z "$bv" ] \ + && emergency_shell -n switch_root "Break before switch_root" +unset bv +info "Switching root" + +unset PS4 + +PATH=$OLDPATH +export PATH + +if [ -f /etc/capsdrop ]; then + . /etc/capsdrop + info "Calling $INIT with capabilities $CAPS_INIT_DROP dropped." + unset RD_DEBUG + exec "$CAPSH" --drop="$CAPS_INIT_DROP" -- \ + -c "exec \"$SWITCH_ROOT\" \"$NEWROOT\" \"$INIT\" $initargs" \ + || { + warn "Command:" + warn capsh --drop="$CAPS_INIT_DROP" -- -c exec "$SWITCH_ROOT" "$NEWROOT" "$INIT" "$initargs" + warn "failed." + emergency_shell + } +else + unset RD_DEBUG + # shellcheck disable=SC2086 + exec "$SWITCH_ROOT" "$NEWROOT" "$INIT" $initargs || { + warn "Something went very badly wrong in the initramfs. Please " + warn "file a bug against dracut." + emergency_shell + } +fi diff --git a/exts/devmaster/dracut_modules/95devmaster/module-setup.sh b/exts/devmaster/dracut_modules/95devmaster/module-setup.sh new file mode 100755 index 00000000..f316debc --- /dev/null +++ b/exts/devmaster/dracut_modules/95devmaster/module-setup.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +check() { + require_binaries devctl || return 1 + return 0 +} + +# called by dracut +install() { + inst_script "$moddir/init.sh" "/init" + + inst_multiple devctl + + inst_dir /etc/devmaster + inst_dir /lib/devmaster + inst_dir /etc/devmaster/network.d + inst_multiple -o /etc/devmaster/config.toml \ + /etc/devmaster/network.d/99-default.link \ + /lib/devmaster/simulate_udev.sh + ln -sf /bin/devctl "${initdir}"/bin/udevadm + ln -sf /bin/devctl "${initdir}"/lib/devmaster/devmaster +} -- Gitee From 5dec6059894077064f8d011cede78138b33df7e6 Mon Sep 17 00:00:00 2001 From: chenjiayi Date: Mon, 1 Jan 2024 19:46:07 +0800 Subject: [PATCH 08/10] docs(devmaster): install dracut modules of devmaster Install dracut modules of devmaster in scripts. --- .../install_devmaster.sh" | 5 +++++ .../uninstall_devmaster.sh" | 5 +++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/install_devmaster.sh" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/install_devmaster.sh" index 74b83755..49ce2068 100644 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/install_devmaster.sh" +++ "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/install_devmaster.sh" @@ -14,6 +14,8 @@ etc_dir=exts/devmaster/config etc_rules_dir=${etc_dir}/rules.d etc_netconf_dir=${etc_dir}/network.d +dracut_modules=exts/devmaster/dracut_modules/95devmaster + etc_conf_install_dir=/etc/devmaster etc_netconf_install_dir=${etc_conf_install_dir}/network.d etc_rules_install_dir=${etc_conf_install_dir}/rules.d @@ -48,4 +50,7 @@ ln -sf ${service_install_dir}/devctl-trigger.service ${multi_user_target_dir}/de test -f ${sysinit_target_dir}/udevd.service && unlink ${sysinit_target_dir}/udevd.service test -f ${multi_user_target_dir}/udev-trigger.service && unlink ${multi_user_target_dir}/udev-trigger.service +# Install dracut module of devmaster +install -Dm0755 -t /lib/dracut/modules.d/95devmaster ${dracut_modules}/* || exit 1 + sync diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/uninstall_devmaster.sh" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/uninstall_devmaster.sh" index 3a8030f2..23367c1d 100644 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/uninstall_devmaster.sh" +++ "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/uninstall_devmaster.sh" @@ -8,7 +8,8 @@ etc_netconf_install_dir=${etc_conf_install_dir}/network.d etc_rules_install_dir=${etc_conf_install_dir}/rules.d lib_devmaster_dir=/lib/devmaster -lib_rules_install_dir=${lib_devmaster_dir}/rules.d + +dracut_modules=/lib/dracut/modules.d/95devmaster service_install_dir=/lib/sysmaster/system sysinit_target_dir=/etc/sysmaster/system/sysinit.target.wants @@ -21,6 +22,6 @@ done unlink ${sysinit_target_dir}/devmaster.service unlink ${multi_user_target_dir}/devctl-trigger.service -rm -rf ${lib_devmaster_dir} ${etc_conf_install_dir} +rm -rf ${lib_devmaster_dir} ${etc_conf_install_dir} ${dracut_modules} sync -- Gitee From ce9ebc81acde49755361c69a803d778eb3b67878 Mon Sep 17 00:00:00 2001 From: chenjiayi Date: Mon, 1 Jan 2024 20:13:16 +0800 Subject: [PATCH 09/10] test(device): fix unit case for checking whether update_db returns error If there is no database file, update_db won't return error any more. --- libs/device/src/device.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/device/src/device.rs b/libs/device/src/device.rs index f6847a74..bfdd0daf 100644 --- a/libs/device/src/device.rs +++ b/libs/device/src/device.rs @@ -3873,7 +3873,7 @@ V:100 let _ = unlink("/tmp/devmaster/data/+drivers:usb:usb"); dev.set_base_path("/tmp/devmaster"); - assert!(dev.update_db().is_err()); + assert!(!dev.update_db().is_err()); dev.add_property("hello", "world").unwrap(); dev.update_db().unwrap(); assert!(Path::new("/tmp/devmaster/data/+drivers:usb:usb").exists()); -- Gitee From 1d3f8a8fb6adf9fbcaf40fe64a356dd8fe8df59f Mon Sep 17 00:00:00 2001 From: chenjiayi Date: Mon, 1 Jan 2024 20:25:30 +0800 Subject: [PATCH 10/10] docs(devmaster): add document for generating initramfs using devmaster instead of udev --- .../readme.md" | 164 +----------------- 1 file changed, 3 insertions(+), 161 deletions(-) diff --git "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/readme.md" "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/readme.md" index 319a4121..6e171e40 100644 --- "a/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/readme.md" +++ "b/docs/use/devmaster\346\233\277\344\273\243udev\350\277\220\350\241\214/readme.md" @@ -17,8 +17,6 @@ Linux localhost.localdomain 5.10.0-60.18.0.50.oe2203.x86_64 #1 SMP Wed Mar 30 03:12:24 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux ``` -- `devmaster`的规则直接取自虚拟机环境中的`udev`规则,在此基础上对`sysmaster`环境中不支持的规则进行了适配。引用的规则以及适配情况见`规则清单`和`适配差异`。 - ## 安装方法 1. 参考[`sysmaster`虚拟机启动方案]()搭建启动环境。 @@ -31,166 +29,10 @@ Linux localhost.localdomain 5.10.0-60.18.0.50.oe2203.x86_64 #1 SMP Wed Mar 30 03 3. 重启系统,选择`sysmaster`启动项。进入主系统后检查`devmaster`服务状态和网络连通情况。 -## 规则清单 - -|编号 | 规则 | 包 | 是否需要适配 | -| ---------------- | --- |-|-| -|1 | 01-md-raid-creating.rules | mdadm-4.1-5.oe2203.x86_64 | | -|2 | 10-dm.rules | device-mapper-1.02.181-4.oe2203.x86_64 | | -|3 | 11-dm-lvm.rules | lvm2-2.03.14-4.oe2203.x86_64 | | -|4 | 11-dm-mpath.rules | multipath-tools-0.8.7-2.oe2203.x86_64 | | -|5 | 11-dm-parts.rules | kpartx-0.8.7-2.oe2203.x86_64 | | -|6 | 13-dm-disk.rules | device-mapper-1.02.181-4.oe2203.x86_64 | | -|7 | 40-elevator.rules | systemd-udev-249-16.oe2203.x86_64 | | -|8 | 40-openEuler.rules | systemd-udev-249-16.oe2203.x86_64 | 是 | -|9 | 50-udev-default.rules | systemd-udev-249-16.oe2203.x86_64 | | -|10 | 60-autosuspend.rules | systemd-udev-249-16.oe2203.x86_64 | | -|11 | 60-block.rules | systemd-udev-249-16.oe2203.x86_64 | | -|12 | 60-cdrom_id.rules | systemd-udev-249-16.oe2203.x86_64 | | -|13 | 60-drm.rules | systemd-udev-249-16.oe2203.x86_64 | | -|14 | 60-evdev.rules | systemd-udev-249-16.oe2203.x86_64 | | -|15 | 60-fido-id.rules | systemd-udev-249-16.oe2203.x86_64 | | -|16 | 60-infiniband.rules | none package | | -|17 | 60-input-id.rules | systemd-udev-249-16.oe2203.x86_64 | | -|18 | 60-net.rules | initscripts-10.12-1.oe2203.x86_64 | | -|19 | 60-persistent-alsa.rules | systemd-udev-249-16.oe2203.x86_64 | | -|20 | 60-persistent-input.rules | systemd-udev-249-16.oe2203.x86_64 | | -|21 | 60-persistent-storage.rules | systemd-udev-249-16.oe2203.x86_64 | | -|22 | 60-persistent-storage-tape.rules | systemd-udev-249-16.oe2203.x86_64 | | -|23 | 60-persistent-v4l.rules | systemd-udev-249-16.oe2203.x86_64 | | -|24 | 60-raw.rules | util-linux-2.37.2-5.oe2203.x86_64 | | -|25 | 60-rdma-ndd.rules | rdma-core-35.1-2.oe2203.x86_64 | | -|26 | 60-rdma-persistent-naming.rules | rdma-core-35.1-2.oe2203.x86_64 | | -|27 | 60-sensor.rules | systemd-udev-249-16.oe2203.x86_64 | | -|28 | 60-serial.rules | systemd-udev-249-16.oe2203.x86_64 | | -|29 | 60-srp_daemon.rules | rdma-core-35.1-2.oe2203.x86_64 | 是 | -|30 | 62-multipath.rules | multipath-tools-0.8.7-2.oe2203.x86_64 | 是 | -|31 | 63-md-raid-arrays.rules | mdadm-4.1-5.oe2203.x86_64 | | -|32 | 64-btrfs-dm.rules | btrfs-progs-5.15-1.oe2203.x86_64 | | -|33 | 64-btrfs.rules | systemd-udev-249-16.oe2203.x86_64 | | -|34 | 64-md-raid-assembly.rules | mdadm-4.1-5.oe2203.x86_64 | | -|35 | 66-kpartx.rules | kpartx-0.8.7-2.oe2203.x86_64 | | -|36 | 68-del-part-nodes.rules | kpartx-0.8.7-2.oe2203.x86_64 | | -|37 | 69-dm-lvm.rules | lvm2-2.03.14-4.oe2203.x86_64 | 是 | -|38 | 69-md-clustered-confirm-device.rules | mdadm-4.1-5.oe2203.x86_64 | | -|39 | 70-camera.rules | none package | | -|40 | 70-joystick.rules | systemd-udev-249-16.oe2203.x86_64 | | -|41 | 70-memory.rules | systemd-249-16.oe2203.x86_64 | | -|42 | 70-mouse.rules | systemd-udev-249-16.oe2203.x86_64 | | -|43 | 70-power-switch.rules | systemd-udev-249-16.oe2203.x86_64 | | -|44 | 70-touchpad.rules | systemd-udev-249-16.oe2203.x86_64 | | -|45 | 70-uaccess.rules | systemd-udev-249-16.oe2203.x86_64 | | -|46 | 71-seat.rules | systemd-udev-249-16.oe2203.x86_64 | | -|47 | 73-idrac.rules | systemd-udev-249-16.oe2203.x86_64 | | -|48 | 73-seat-late.rules | systemd-udev-249-16.oe2203.x86_64 | | -|49 | 75-net-description.rules | systemd-udev-249-16.oe2203.x86_64 | | -|50 | 75-probe_mtd.rules | systemd-udev-249-16.oe2203.x86_64 | | -|51 | 75-rdma-description.rules | rdma-core-35.1-2.oe2203.x86_64 | | -|52 | 78-sound-card.rules | systemd-udev-249-16.oe2203.x86_64 | | -|53 | 80-drivers.rules | systemd-udev-249-16.oe2203.x86_64 | | -|54 | 80-net-setup-link.rules | systemd-udev-249-16.oe2203.x86_64 | | -|55 | 80-tpm-udev.rules | tpm2-tss-3.1.0-1.oe2203.x86_64 | | -|56 | 80-udisks2.rules | udisks2-2.9.4-2.oe2203.x86_64 | | -|57 | 81-net-dhcp.rules | systemd-249-16.oe2203.x86_64 | | -|58 | 84-nm-drivers.rules | NetworkManager-1.32.12-8.oe2203.x86_64 | | -|59 | 85-nm-unmanaged.rules | NetworkManager-1.32.12-8.oe2203.x86_64 | | -|60 | 90-iprutils.rules | iprutils-2.4.19-1.oe2203.x86_64 | | -|61 | 90-iwpmd.rules | rdma-core-35.1-2.oe2203.x86_64 | | -|62 | 90-nm-thunderbolt.rules | NetworkManager-1.32.12-8.oe2203.x86_64 | | -|63 | 90-rdma-hw-modules.rules | rdma-core-35.1-2.oe2203.x86_64 | | -|64 | 90-rdma-ulp-modules.rules | rdma-core-35.1-2.oe2203.x86_64 | | -|65 | 90-rdma-umad.rules | rdma-core-35.1-2.oe2203.x86_64 | | -|66 | 90-vconsole.rules | systemd-udev-249-16.oe2203.x86_64 | 是 | -|67 | 91-drm-modeset.rules | libdrm-2.4.109-2.oe2203.x86_64 | | -|68 | 95-dm-notify.rules | device-mapper-1.02.181-4.oe2203.x86_64 | | -|69 | 96-e2scrub.rules | e2fsprogs-1.46.4-7.oe2203.x86_64 | | -|70 | 98-kexec.rules | kexec-tools-2.0.23-4.oe2203.x86_64 | 是 | -|71 | 99-systemd.rules | systemd-udev-249-16.oe2203.x86_64 | 是 | - -**`systemd`相关命令无法在`sysmaster`启动环境中使用,使用到这些命令的规则需要进行适配。部分适配动作会对功能造成影响,比如注释某条规则。某些适配动作不影响功能,但会产生行为差异,比如规则中调用`systemd-run `命令会生成一个`systemd`的服务并执行`cmd`命令,适配后会去除`systemd-run`前缀,直接由`devmaster`创建子进程来执行`cmd`。另外清理了规则中的一些语法告警,比如`IMPORT{}`类规则使用了赋值操作符等,此类修改不影响规则执行结果。** - -## 规则适配差异 - -### 40-openEuler.rules - -```shell -# diff tools/run_with_devmaster/rules.d/40-openEuler.rules /lib/udev/rules.d/40-openEuler.rules -17c17 -< # ACTION=="add", SUBSYSTEM=="module", KERNEL=="bridge", RUN+="/usr/lib/systemd/systemd-sysctl --prefix=/proc/sys/net/bridge" ---- -> ACTION=="add", SUBSYSTEM=="module", KERNEL=="bridge", RUN+="/usr/lib/systemd/systemd-sysctl --prefix=/proc/sys/net/bridge" -``` - -### 60-srp_daemon.rules - -```shell -# diff 60-srp_daemon.rules /lib/udev/rules.d/60-srp_daemon.rules -1c1 -< #SUBSYSTEM=="infiniband_mad", KERNEL=="*umad*", PROGRAM=="/bin/systemctl show srp_daemon -p ActiveState", RESULT=="ActiveState=active", ENV{SYSTEMD_WANTS}+="srp_daemon_port@$attr{ibdev}:$attr{port}.service" ---- -> SUBSYSTEM=="infiniband_mad", KERNEL=="*umad*", PROGRAM=="/bin/systemctl show srp_daemon -p ActiveState", RESULT=="ActiveState=active", ENV{SYSTEMD_WANTS}+="srp_daemon_port@$attr{ibdev}:$attr{port}.service" -``` - -### 62-multipath.rules +## 替换initrd中的udev -```shell -# diff 62-multipath.rules /lib/udev/rules.d/62-multipath.rules -74,75c74 -< # RUN+="/usr/bin/systemd-run --unit=cancel-multipath-wait-$kernel --description 'cancel waiting for multipath siblings of $kernel' --no-block --timer-property DefaultDependencies=no --timer-property Conflicts=shutdown.target --timer-property Before=shutdown.target --timer-property AccuracySec=500ms --property DefaultDependencies=no --property Conflicts=shutdown.target --property Before=shutdown.target --property Wants=multipathd.service --property After=multipathd.service --on-active=$env{FIND_MULTIPATHS_WAIT_UNTIL} /usr/bin/udevadm trigger --action=add $sys$devpath" -< RUN+="/usr/bin/devctl trigger --action=add $sys$devpath" ---- -> RUN+="/usr/bin/systemd-run --unit=cancel-multipath-wait-$kernel --description 'cancel waiting for multipath siblings of $kernel' --no-block --timer-property DefaultDependencies=no --timer-property Conflicts=shutdown.target --timer-property Before=shutdown.target --timer-property AccuracySec=500ms --property DefaultDependencies=no --property Conflicts=shutdown.target --property Before=shutdown.target --property Wants=multipathd.service --property After=multipathd.service --on-active=$env{FIND_MULTIPATHS_WAIT_UNTIL} /usr/bin/udevadm trigger --action=add $sys$devpath" -85,90c84,89 -< IMPORT{db}=="FIND_MULTIPATHS_WAIT_CANCELLED" -< # ENV{FIND_MULTIPATHS_WAIT_CANCELLED}!="?*", \ -< # ENV{FIND_MULTIPATHS_WAIT_UNTIL}=="?*", \ -< # ENV{FIND_MULTIPATHS_WAIT_UNTIL}!="0", \ -< # ENV{FIND_MULTIPATHS_WAIT_CANCELLED}="1", \ -< # RUN+="/usr/bin/systemctl stop cancel-multipath-wait-$kernel.timer" ---- -> IMPORT{db}="FIND_MULTIPATHS_WAIT_CANCELLED" -> ENV{FIND_MULTIPATHS_WAIT_CANCELLED}!="?*", \ -> ENV{FIND_MULTIPATHS_WAIT_UNTIL}=="?*", \ -> ENV{FIND_MULTIPATHS_WAIT_UNTIL}!="0", \ -> ENV{FIND_MULTIPATHS_WAIT_CANCELLED}="1", \ -> RUN+="/usr/bin/systemctl stop cancel-multipath-wait-$kernel.timer" -``` - -### 69-dm-lvm.rules - -```shell -# diff 69-dm-lvm.rules /lib/udev/rules.d/69-dm-lvm.rules -82,84c82,83 -< IMPORT{program}=="/usr/sbin/lvm pvscan --cache --listvg --checkcomplete --vgonline --udevoutput --journal=output $env{DEVNAME}" -< # ENV{LVM_VG_NAME_COMPLETE}=="?*", RUN+="/usr/bin/systemd-run -r --no-block --property DefaultDependencies=no --unit lvm-activate-$env{LVM_VG_NAME_COMPLETE} lvm vgchange -aay --nohints $env{LVM_VG_NAME_COMPLETE}" -< ENV{LVM_VG_NAME_COMPLETE}=="?*", RUN+="/usr/sbin/lvm vgchange -aay --nohints $env{LVM_VG_NAME_COMPLETE}" ---- -> IMPORT{program}="/usr/sbin/lvm pvscan --cache --listvg --checkcomplete --vgonline --udevoutput --journal=output $env{DEVNAME}" -> ENV{LVM_VG_NAME_COMPLETE}=="?*", RUN+="/usr/bin/systemd-run -r --no-block --property DefaultDependencies=no --unit lvm-activate-$env{LVM_VG_NAME_COMPLETE} lvm vgchange -aay --nohints $env{LVM_VG_NAME_COMPLETE}" -``` - -### 98-kexec.rules +devmaster提供了dracut模块,用于制作initramfs时替换默认的udev组件。安装devmaster后,执行以下命令制作initramfs: ```shell -# diff 98-kexec.rules /lib/udev/rules.d/98-kexec.rules -14,16c14 -< #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'" -< -< RUN+="/bin/sh -c '/usr/bin/systemctl is-active kdump.service || exit 0; /usr/lib/udev/kdump-udev-throttler'" ---- -> 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'" +# dracut -f --omit "systemd systemd-initrd systemd-networkd dracut-systemd rngd dbus-daemon dbus network-manager rngd plymouth" --add "devmaster" ``` - -### 90-vconsole.rules - -```shell -# diff tools/run_with_devmaster/rules.d/90-vconsole.rules /lib/udev/rules.d/90-vconsole.rules -3c12 -< # ACTION=="add", SUBSYSTEM=="vtconsole", KERNEL=="vtcon*", RUN+="/usr/lib/systemd/systemd-vconsole-setup" ---- -> ACTION=="add", SUBSYSTEM=="vtconsole", KERNEL=="vtcon*", RUN+="/usr/lib/systemd/systemd-vconsole-setup" -``` - -### 99-systemd.rules - -`99-systemd.rules`规则中的所有内容均被注释。 -- Gitee