@@ -0,0 +1,19 @@
|
||||
[service]
|
||||
display-name = "Linux Device Daemon"
|
||||
description = "Userspace daemon for dynamically managing Linux device files and their properties."
|
||||
|
||||
[exec]
|
||||
start = "lxdeviced"
|
||||
|
||||
[env]
|
||||
working_dir = "/"
|
||||
clear_vars = true
|
||||
|
||||
[retry]
|
||||
max-attempts = -1
|
||||
|
||||
[env.vars]
|
||||
PATH = "/usr/bin"
|
||||
LXDEVICED_HAS_DEVTMPFS = "1"
|
||||
LXDEVICED_DEV_ROOT = "/dev"
|
||||
LXDEVICED_SYSFS_ROOT = "/sys"
|
||||
@@ -0,0 +1,66 @@
|
||||
[
|
||||
(
|
||||
when: Match("DEVPATH", "/devices/virtual/mem/null"),
|
||||
do: [
|
||||
Set("MODE", "0o666"),
|
||||
Set("OWNER", "0"),
|
||||
Set("GROUP", "0"),
|
||||
],
|
||||
),
|
||||
(
|
||||
when: Match("DEVPATH", "/devices/virtual/mem/zero"),
|
||||
do: [
|
||||
Set("MODE", "0o666"),
|
||||
Set("OWNER", "0"),
|
||||
Set("GROUP", "0"),
|
||||
],
|
||||
),
|
||||
(
|
||||
when: Match("DEVPATH", "/devices/virtual/mem/urandom"),
|
||||
do: [
|
||||
Set("MODE", "0o666"),
|
||||
Set("OWNER", "0"),
|
||||
Set("GROUP", "0"),
|
||||
],
|
||||
),
|
||||
(
|
||||
when: Match("DEVPATH", "/devices/virtual/mem/random"),
|
||||
do: [
|
||||
Set("MODE", "0o666"),
|
||||
Set("OWNER", "0"),
|
||||
Set("GROUP", "0"),
|
||||
],
|
||||
),
|
||||
(
|
||||
when: Match("DEVPATH", "/devices/virtual/mem/full"),
|
||||
do: [
|
||||
Set("MODE", "0o666"),
|
||||
Set("OWNER", "0"),
|
||||
Set("GROUP", "0"),
|
||||
],
|
||||
),
|
||||
(
|
||||
when: Match("DEVPATH", "/devices/virtual/mem/mem"),
|
||||
do: [
|
||||
Set("MODE", "0o600"),
|
||||
Set("OWNER", "0"),
|
||||
Set("GROUP", "0"),
|
||||
],
|
||||
),
|
||||
(
|
||||
when: Match("DEVPATH", "/devices/virtual/mem/port"),
|
||||
do: [
|
||||
Set("MODE", "0o600"),
|
||||
Set("OWNER", "0"),
|
||||
Set("GROUP", "0"),
|
||||
],
|
||||
),
|
||||
(
|
||||
when: Match("DEVPATH", "/devices/virtual/mem/kmsg"),
|
||||
do: [
|
||||
Set("MODE", "0o600"),
|
||||
Set("OWNER", "0"),
|
||||
Set("GROUP", "0"),
|
||||
],
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,8 @@
|
||||
[
|
||||
(
|
||||
when: Match("MODALIAS", ".*"),
|
||||
do: [
|
||||
Command(f("modprobe {MODALIAS}")),
|
||||
],
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,17 @@
|
||||
[
|
||||
(
|
||||
when: Match("SUBSYSTEM", "tty"),
|
||||
do: [
|
||||
Set("MODE", "0o600"),
|
||||
]
|
||||
),
|
||||
(
|
||||
when: All([
|
||||
Match("SUBSYSTEM", "tty"),
|
||||
Match("DEVNAME", "tty"),
|
||||
]),
|
||||
do: [
|
||||
Set("MODE", "0o666"),
|
||||
]
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,54 @@
|
||||
[
|
||||
// Register information providers that knows block devices
|
||||
(
|
||||
when: All([
|
||||
Match("ACTION", "add"),
|
||||
Match("SUBSYSTEM", "block"),
|
||||
Match("DEVNODE", ".*"),
|
||||
]),
|
||||
do: [
|
||||
UseProvider("FSUUID", f("blkid -o value -s UUID {DEVNODE}")),
|
||||
],
|
||||
on_error: Continue,
|
||||
),
|
||||
(
|
||||
when: Match("FSUUID", ""),
|
||||
do: [Unset("FSUUID")],
|
||||
),
|
||||
|
||||
// Create link aliases for block devices
|
||||
(
|
||||
when: All([
|
||||
Match("ACTION", "add"),
|
||||
Match("SUBSYSTEM", "block"),
|
||||
Match("PARTUUID", ".+"),
|
||||
]),
|
||||
do: [Add("SYMLINKS", f("{DEVROOT}/disk/by-partuuid/{PARTUUID}"))],
|
||||
),
|
||||
(
|
||||
when: All([
|
||||
Match("ACTION", "add"),
|
||||
Match("SUBSYSTEM", "block"),
|
||||
Match("DISKSEQ", ".+"),
|
||||
Match("DEVTYPE", "disk"),
|
||||
]),
|
||||
do: [Add("SYMLINKS", f("{DEVROOT}/disk/by-diskseq/{DISKSEQ}"))],
|
||||
),
|
||||
(
|
||||
when: All([
|
||||
Match("ACTION", "add"),
|
||||
Match("SUBSYSTEM", "block"),
|
||||
Match("FSUUID", ".+"),
|
||||
]),
|
||||
do: [Add("SYMLINKS", f("{DEVROOT}/disk/by-uuid/{FSUUID}"))],
|
||||
),
|
||||
(
|
||||
when: All([
|
||||
Match("ACTION", "add"),
|
||||
Match("SUBSYSTEM", "block"),
|
||||
Match("MAJOR", ".+"),
|
||||
Match("MINOR", ".+"),
|
||||
]),
|
||||
do: [Add("SYMLINKS", f("{DEVROOT}/block/{MAJOR}:{MINOR}"))],
|
||||
),
|
||||
]
|
||||
Reference in New Issue
Block a user