forked from calculate/calculate-overlay
parent
876346ba32
commit
d5eb23c1af
@ -0,0 +1,23 @@
|
||||
# Calculate comment=# ini(container.type)==host path=/lib/udev/rules.d
|
||||
|
||||
# VirtualBox
|
||||
ACTION=="add|remove", DEVPATH=="/devices/virtual/misc/vbox*", ENV{ID_LXC}="all"
|
||||
|
||||
# PS/2 keyboard and mouse
|
||||
ACTION=="add|remove", DEVPATH=="/devices/platform/i8042/*", ENV{ID_LXC}="all"
|
||||
|
||||
# USB devices
|
||||
ACTION=="add|remove", ENV{ID_BUS}=="usb", ENV{ID_LXC}="all"
|
||||
|
||||
# Audio devices
|
||||
ACTION=="add|remove", SUBSYSTEM=="sound", ENV{ID_LXC}="all"
|
||||
# tty0 for chvt and lightdm
|
||||
ACTION=="add|remove", KERNEL=="tty0", ENV{ID_LXC}="all"
|
||||
# tty7-10 for xorg-server
|
||||
ACTION=="add|remove", KERNEL=="tty7", ENV{ID_LXC}="all"
|
||||
ACTION=="add|remove", KERNEL=="tty8", ENV{ID_LXC}="all"
|
||||
ACTION=="add|remove", KERNEL=="tty9", ENV{ID_LXC}="all"
|
||||
ACTION=="add|remove", KERNEL=="tty10", ENV{ID_LXC}="all"
|
||||
|
||||
# Video devices
|
||||
ACTION=="add|remove", SUBSYSTEM=="drm", ENV{ID_LXC}="all"
|
@ -0,0 +1,8 @@
|
||||
# Calculate comment=# ini(container.type)==host path=/lib/udev/rules.d
|
||||
|
||||
ENV{ID_LXC}=="", GOTO="lxc_end"
|
||||
|
||||
ACTION=="add", PROGRAM="/bin/bash /usr/libexec/lxc-udev-trigger add '$env{DEVNAME}' '$env{MAJOR}' '$env{MINOR}' '$env{SUBSYSTEM}' '$env{ID_LXC}'"
|
||||
ACTION=="remove", PROGRAM="/bin/bash /usr/libexec/lxc-udev-trigger remove $env{DEVNAME} $env{MAJOR} $env{MINOR} $env{SUBSYSTEM} $env{ID_LXC}"
|
||||
|
||||
LABEL="lxc_end"
|
@ -0,0 +1,61 @@
|
||||
# Calculate comment=# ini(container.type)==host path=/usr/libexec chmod=0755
|
||||
#!/bin/bash
|
||||
|
||||
ACTION="$1"
|
||||
DEVNAME="$2"
|
||||
MAJOR="$3"
|
||||
MINOR="$4"
|
||||
SUBSYSTEM="$5"
|
||||
|
||||
if [[ -z $MINOR ]] || [[ -z $DEVNAME ]]
|
||||
then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
shift 5
|
||||
COMPS="$*"
|
||||
|
||||
process_device() {
|
||||
local comp=$1
|
||||
if [[ "$ACTION" == "add" ]]
|
||||
then
|
||||
lxc-device -n ${comp} -- add $DEVNAME
|
||||
lxc-attach -n ${comp} $(stat -L -c "chmod %a %n" $DEVNAME)
|
||||
lxc-attach -n ${comp} $(stat -L -c "chown %u:%g %n" $DEVNAME)
|
||||
udevadm trigger --action=change --name-match=$DEVNAME
|
||||
fi
|
||||
if [[ "$ACTION" == "remove" ]]
|
||||
then
|
||||
lxc-attach -n ${comp} -- rm $DEVNAME
|
||||
if [[ -n $MAJOR ]] && [[ -n $MINOR ]]
|
||||
then
|
||||
if [[ $SUBSYSTEM == "block" ]]
|
||||
then
|
||||
lxc-cgroup -n ${comp} devices.deny "b $MAJOR:$MINOR rwm"
|
||||
else
|
||||
lxc-cgroup -n ${comp} devices.deny "c $MAJOR:$MINOR rwm"
|
||||
fi
|
||||
fi
|
||||
udevadm trigger --action=remove --name-match=$DEVNAME
|
||||
fi
|
||||
}
|
||||
|
||||
if [[ $COMPS == "all" ]]
|
||||
then
|
||||
for COMP in $(lxc-ls -1q 2>/dev/null)
|
||||
do
|
||||
if lxc-info -n $COMP -c lxc.environment | grep LXC_DESKTOP=1 &>/dev/null
|
||||
then
|
||||
process_device $COMP
|
||||
fi
|
||||
done
|
||||
else
|
||||
for COMP in $COMPS
|
||||
do
|
||||
if [[ -n $(lxc-info -pH -n $COMP) ]]
|
||||
then
|
||||
process_device $COMP
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
Loading…
Reference in new issue