mirror of
				https://github.com/tteck/Proxmox.git
				synced 2025-10-30 18:39:10 +00:00 
			
		
		
		
	Add files via upload
This commit is contained in:
		
							parent
							
								
									dc86479cc4
								
							
						
					
					
						commit
						b824253edf
					
				
							
								
								
									
										45
									
								
								autodev.sh
									
									
									
									
									
								
							
							
						
						
									
										45
									
								
								autodev.sh
									
									
									
									
									
								
							| @ -1,10 +1,18 @@ | |||||||
| #!/usr/bin/env bash | #!/usr/bin/env bash | ||||||
| 
 | 
 | ||||||
| # Setup script environment | while true; do | ||||||
| set -o errexit  #Exit immediately if a pipeline returns a non-zero status |     read -p "To allow device passthrough to the predefined LXC container. Proceed(y/n)?" yn | ||||||
| set -o errtrace #Trap ERR from shell functions, command substitutions, and commands from subshell |     case $yn in | ||||||
| set -o nounset  #Treat unset variables as an error |         [Yy]* ) break;; | ||||||
| set -o pipefail #Pipe will exit with last non-zero status if applicable |         [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+=("1:1") | ||||||
| #CHAR_DEVS+=(major:minor) | CHAR_DEVS+=("4:\([3-9]\|[1-5][0-9]\|6[0-3]\)") | ||||||
| CHAR_DEVS+=("1:1") #mem (physical memory access) | 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+=("4:\([3-9]\|[1-5][0-9]\|6[0-3]\)") #tty* (virtual console, minor 3-63) | CHAR_DEVS+=("10:200") | ||||||
| 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+=("116:.*") | ||||||
| CHAR_DEVS+=("10:200") #net/tun (TAP/TUN network device) | CHAR_DEVS+=("166:.*") | ||||||
| CHAR_DEVS+=("116:.*") #(ALSA devices) | CHAR_DEVS+=("180:\([0-9]\|1[0-5]\)") | ||||||
| CHAR_DEVS+=("166:.*") #ttyACM* (ACM USB modems) | CHAR_DEVS+=("188:.*") | ||||||
| CHAR_DEVS+=("180:\([0-9]\|1[0-5]\)") #usb/hiddev* (UPS devices, minor 0-15) | CHAR_DEVS+=("189:.*") | ||||||
| CHAR_DEVS+=("188:.*") #ttyUSB* (USB serial converters) | CHAR_DEVS+=("24[0-2]:.*") | ||||||
| CHAR_DEVS+=("189:.*") #bus/usb/* (USB serial converters - alternate devices) |  | ||||||
| 
 | 
 | ||||||
| # 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' | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user