You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
1.2 KiB
62 lines
1.2 KiB
{% calculate comment='#', path='/usr/libexec', chmod='755', install.os.container.type == 'host' %}
|
|
#!/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
|
|
|