edge-kernel.sh 6.0 KB

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