Browse Source

Add files via upload

tteckster 3 years ago
parent
commit
b824253edf
1 changed files with 24 additions and 21 deletions
  1. 24 21
      autodev.sh

+ 24 - 21
autodev.sh

@@ -1,10 +1,18 @@
 #!/usr/bin/env bash
 #!/usr/bin/env bash
 
 
-# Setup script environment
-set -o errexit  #Exit immediately if a pipeline returns a non-zero status
-set -o errtrace #Trap ERR from shell functions, command substitutions, and commands from subshell
-set -o nounset  #Treat unset variables as an error
-set -o pipefail #Pipe will exit with last non-zero status if applicable
+while true; do
+    read -p "To allow device passthrough to the predefined LXC container. Proceed(y/n)?" yn
+    case $yn in
+        [Yy]* ) break;;
+        [Nn]* ) exit;;
+        * ) echo "Please answer yes or no.";;
+    esac
+done
+
+set -o errexit
+set -o errtrace
+set -o nounset
+set -o pipefail
 shopt -s expand_aliases
 shopt -s expand_aliases
 alias die='EXIT=$? LINE=$LINENO error_exit'
 alias die='EXIT=$? LINE=$LINENO error_exit'
 trap die ERR
 trap die ERR
@@ -29,25 +37,22 @@ function cleanup() {
 TEMP_DIR=$(mktemp -d)
 TEMP_DIR=$(mktemp -d)
 pushd $TEMP_DIR >/dev/null
 pushd $TEMP_DIR >/dev/null
 
 
-# Array of device types to enable in container
-#CHAR_DEVS+=(major:minor)
-CHAR_DEVS+=("1:1") #mem (physical memory access)
-CHAR_DEVS+=("4:\([3-9]\|[1-5][0-9]\|6[0-3]\)") #tty* (virtual console, minor 3-63)
-CHAR_DEVS+=("4:\(6[4-9]\|[7-9][0-9]\|1[0-9][0-9]\|2[0-4][0-9]\|25[0-5]\)") #ttyS* (UART serial port, minor 64-255)
-CHAR_DEVS+=("10:200") #net/tun (TAP/TUN network device)
-CHAR_DEVS+=("116:.*") #(ALSA devices)
-CHAR_DEVS+=("166:.*") #ttyACM* (ACM USB modems)
-CHAR_DEVS+=("180:\([0-9]\|1[0-5]\)") #usb/hiddev* (UPS devices, minor 0-15)
-CHAR_DEVS+=("188:.*") #ttyUSB* (USB serial converters)
-CHAR_DEVS+=("189:.*") #bus/usb/* (USB serial converters - alternate devices)
+CHAR_DEVS+=("1:1")
+CHAR_DEVS+=("4:\([3-9]\|[1-5][0-9]\|6[0-3]\)")
+CHAR_DEVS+=("4:\(6[4-9]\|[7-9][0-9]\|1[0-9][0-9]\|2[0-4][0-9]\|25[0-5]\)")
+CHAR_DEVS+=("10:200")
+CHAR_DEVS+=("116:.*")
+CHAR_DEVS+=("166:.*")
+CHAR_DEVS+=("180:\([0-9]\|1[0-5]\)")
+CHAR_DEVS+=("188:.*")
+CHAR_DEVS+=("189:.*")
+CHAR_DEVS+=("24[0-2]:.*")
 
 
-# Proccess char device string
 for char_dev in ${CHAR_DEVS[@]}; do
 for char_dev in ${CHAR_DEVS[@]}; do
   [ ! -z "${CHAR_DEV_STRING-}" ] && CHAR_DEV_STRING+=" -o"
   [ ! -z "${CHAR_DEV_STRING-}" ] && CHAR_DEV_STRING+=" -o"
   CHAR_DEV_STRING+=" -regex \".*/${char_dev}\""
   CHAR_DEV_STRING+=" -regex \".*/${char_dev}\""
 done
 done
 
 
-# Store autodev hook script in variable
 read -r -d '' HOOK_SCRIPT <<- EOF || true
 read -r -d '' HOOK_SCRIPT <<- EOF || true
 for char_dev in \$(find /sys/dev/char -regextype sed $CHAR_DEV_STRING); do
 for char_dev in \$(find /sys/dev/char -regextype sed $CHAR_DEV_STRING); do
   dev="/dev/\$(sed -n "/DEVNAME/ s/^.*=\(.*\)$/\1/p" \${char_dev}/uevent)";
   dev="/dev/\$(sed -n "/DEVNAME/ s/^.*=\(.*\)$/\1/p" \${char_dev}/uevent)";
@@ -59,15 +64,13 @@ for char_dev in \$(find /sys/dev/char -regextype sed $CHAR_DEV_STRING); do
   cp -dpR \$dev \${LXC_ROOTFS_MOUNT}\${dev};
   cp -dpR \$dev \${LXC_ROOTFS_MOUNT}\${dev};
 done;
 done;
 EOF
 EOF
-HOOK_SCRIPT=${HOOK_SCRIPT//$'\n'/} #Remove newline char from variable
+HOOK_SCRIPT=${HOOK_SCRIPT//$'\n'/}
 
 
-# Remove autodev settings
 CTID=$1
 CTID=$1
 CTID_CONFIG_PATH=/etc/pve/lxc/${CTID}.conf
 CTID_CONFIG_PATH=/etc/pve/lxc/${CTID}.conf
 sed '/autodev/d' $CTID_CONFIG_PATH >CTID.conf
 sed '/autodev/d' $CTID_CONFIG_PATH >CTID.conf
 cat CTID.conf >$CTID_CONFIG_PATH
 cat CTID.conf >$CTID_CONFIG_PATH
 
 
-# Add autodev settings
 cat <<EOF >> $CTID_CONFIG_PATH
 cat <<EOF >> $CTID_CONFIG_PATH
 lxc.autodev: 1
 lxc.autodev: 1
 lxc.hook.autodev: bash -c '$HOOK_SCRIPT'
 lxc.hook.autodev: bash -c '$HOOK_SCRIPT'