edge-kernel.sh 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. #!/usr/bin/env bash
  2. # bash -c "$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/misc/edge-kernel.sh)"
  3. function header_info {
  4. cat <<"EOF"
  5. ____ _ ________ ______ __ __ __ __
  6. / __ \ | / / ____/ / ____/___/ /___ ____ / //_/__ _________ ___ / /____
  7. / /_/ / | / / __/ / __/ / __ / __ `/ _ \ / ,< / _ \/ ___/ __ \/ _ \/ / ___/
  8. / ____/| |/ / /___ / /___/ /_/ / /_/ / __/ / /| / __/ / / / / / __/ (__ )
  9. /_/ |___/_____/ /_____/\__,_/\__, /\___/ /_/ |_\___/_/ /_/ /_/\___/_/____/
  10. /____/
  11. EOF
  12. }
  13. set -e
  14. KERNEL_ON=$(uname -r)
  15. PVE_KERNEL=$(dpkg --list | grep 'kernel-.*-pve' | awk '{print substr($2, 12, length($2)-1) }' | tac | head -n 1)
  16. EDGE_KERNEL=$(dpkg --list | grep 'kernel-.*-edge' | awk '{print substr($2, 12, length($2)-1) }' | tac | head -n 1)
  17. VER=$(curl -s https://api.github.com/repos/fabianishere/pve-edge-kernel/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-9) }')
  18. KER=$(curl -s https://api.github.com/repos/fabianishere/pve-edge-kernel/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-6) }')
  19. clear
  20. header_info
  21. while true; do
  22. read -p "This is a Proxmox Edge Kernel Tool, USE AT YOUR OWN RISK. Proceed(y/n)?" yn
  23. case $yn in
  24. [Yy]*) break ;;
  25. [Nn]*) exit ;;
  26. *) echo "Please answer yes or no." ;;
  27. esac
  28. done
  29. clear
  30. header_info
  31. show_menu() {
  32. normal=$(echo "\033[m")
  33. safe=$(echo "\033[32m")
  34. menu=$(echo "\033[36m")
  35. number=$(echo "\033[33m")
  36. bgred=$(echo "\033[41m")
  37. fgred=$(echo "\033[31m")
  38. proxmox-boot-tool kernel list
  39. echo -e "\nCurrent Kernel: ${menu}${KERNEL_ON}${normal}"
  40. printf "\n${menu}*********************************************${normal}\n"
  41. printf "${menu}**${number} 1)${normal} Install Proxmox Edge Kernel ${menu}${KER}${normal} & Reboot\n"
  42. printf "${menu}**${number} 2)${normal} Switch to Proxmox VE 7 ${menu}${PVE_KERNEL}${normal} Kernel & Reboot\n"
  43. printf "${menu}**${number} 3)${normal} Switch to Proxmox Edge ${menu}${EDGE_KERNEL}${normal} Kernel & Reboot\n"
  44. printf "${menu}**${number} 4)${normal} Unpin Current Kernel\n"
  45. printf "${menu}**${number} 5)${normal} Remove All Current ${menu}${VER}*${normal} Proxmox Edge Kernels & Reboot\n"
  46. printf "${menu}*********************************************${normal}\n"
  47. printf "Please choose an option from the menu, or ${fgred}x${normal} to exit."
  48. read opt
  49. }
  50. option_picked() {
  51. msgcolor=$(echo "\033[01;31m")
  52. normal=$(echo "\033[00;00m")
  53. message=${@:-"${normal}Error: No message passed"}
  54. printf "${msgcolor}${message}${normal}\n"
  55. }
  56. clear
  57. header_info
  58. show_menu
  59. while [ "$opt" != "" ]; do
  60. if [ "$opt" = "" ]; then
  61. exit
  62. else
  63. case $opt in
  64. 1)
  65. while true; do
  66. read -p "Are you sure you want to Install Proxmox Edge Kernel & Reboot? Proceed(y/n)?" yn
  67. case $yn in
  68. [Yy]*) break ;;
  69. [Nn]*) exit ;;
  70. *) echo "Please answer yes or no." ;;
  71. esac
  72. done
  73. clear
  74. option_picked "Installing Proxmox Edge Kernel & Rebooting"
  75. apt-get install -y gnupg
  76. curl -1sLf 'https://dl.cloudsmith.io/public/pve-edge/kernel/gpg.8EC01CCF309B98E7.key' | apt-key add -
  77. echo "deb https://dl.cloudsmith.io/public/pve-edge/kernel/deb/debian bullseye main" >/etc/apt/sources.list.d/pve-edge-kernel.list
  78. apt-get -y update
  79. apt-get -y install pve-kernel-${VER}-edge
  80. reboot
  81. break
  82. ;;
  83. 2)
  84. while true; do
  85. read -p "Are you sure you want to Switch to Proxmox VE 7 ${PVE_KERNEL} Kernel & Reboot? Proceed(y/n)?" yn
  86. case $yn in
  87. [Yy]*) break ;;
  88. [Nn]*) exit ;;
  89. *) echo "Please answer yes or no." ;;
  90. esac
  91. done
  92. clear
  93. option_picked "Switching to Proxmox VE 7 Kernel & Rebooting"
  94. proxmox-boot-tool kernel pin ${PVE_KERNEL}
  95. reboot
  96. break
  97. ;;
  98. 3)
  99. while true; do
  100. read -p "Are you sure you want to Switch to Proxmox ${EDGE_KERNEL} Edge Kernel & Reboot? Proceed(y/n)?" yn
  101. case $yn in
  102. [Yy]*) break ;;
  103. [Nn]*) exit ;;
  104. *) echo "Please answer yes or no." ;;
  105. esac
  106. done
  107. clear
  108. option_picked "Switching to Proxmox Edge Kernel & Rebooting"
  109. proxmox-boot-tool kernel pin ${EDGE_KERNEL}
  110. reboot
  111. break
  112. ;;
  113. 4)
  114. while true; do
  115. read -p "Are you sure you want to Unpin the Current Kernel? Proceed(y/n)?" yn
  116. case $yn in
  117. [Yy]*) break ;;
  118. [Nn]*) exit ;;
  119. *) echo "Please answer yes or no." ;;
  120. esac
  121. done
  122. clear
  123. option_picked "Unpinning Current Kernel"
  124. proxmox-boot-tool kernel unpin
  125. clear
  126. break
  127. ;;
  128. 5)
  129. while true; do
  130. read -p "Are you sure you want to Remove Proxmox Edge Kernel & Reboot? Proceed(y/n)?" yn
  131. case $yn in
  132. [Yy]*) break ;;
  133. [Nn]*) exit ;;
  134. *) echo "Please answer yes or no." ;;
  135. esac
  136. done
  137. clear
  138. option_picked "Removing Proxmox Edge Kernel & Rebooting"
  139. apt --purge remove -y pve-kernel-${VER}*edge pve-headers-${VER}*edge
  140. rm -rf /etc/apt/sources.list.d/pve-edge-kernel.list
  141. proxmox-boot-tool kernel unpin
  142. reboot
  143. break
  144. ;;
  145. x)
  146. exit
  147. ;;
  148. \n)
  149. exit
  150. ;;
  151. *)
  152. clear
  153. option_picked "Please choose an option from the menu"
  154. header_info
  155. show_menu
  156. ;;
  157. esac
  158. fi
  159. done
  160. header_info
  161. show_menu