Debian_Kernel.sh 4.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. #!/bin/bash
  2. deb_issue="$(cat /etc/issue)"
  3. deb_relese="$(echo $deb_issue |grep -io 'Ubuntu\|Debian' |sed -r 's/(.*)/\L\1/')"
  4. os_ver="$(dpkg --print-architecture)"
  5. [ -n "$os_ver" ] || exit 1
  6. if [ "$deb_relese" == 'ubuntu' ]; then
  7. deb_ver="$(echo $deb_issue |grep -o '[0-9]*\.[0-9]*' |head -n1)"
  8. if [ "$deb_ver" == "14.04" ]; then
  9. item="3.16.0-77-generic" && ver='trusty'
  10. elif [ "$deb_ver" == "16.04" ]; then
  11. item="4.8.0-36-generic" && ver='xenial'
  12. elif [ "$deb_ver" == "18.04" ]; then
  13. item="4.15.0-30-generic" && ver='bionic'
  14. else
  15. exit 1
  16. fi
  17. url='archive.ubuntu.com'
  18. urls='security.ubuntu.com'
  19. elif [ "$deb_relese" == 'debian' ]; then
  20. deb_ver="$(echo $deb_issue |grep -o '[0-9]*' |head -n1)"
  21. if [ "$deb_ver" == "7" ]; then
  22. item="3.2.0-4-${os_ver}" && ver='wheezy' && url='archive.debian.org' && urls='archive.debian.org'
  23. elif [ "$deb_ver" == "8" ]; then
  24. item="3.16.0-4-${os_ver}" && ver='jessie' && url='archive.debian.org' && urls='deb.debian.org'
  25. elif [ "$deb_ver" == "9" ]; then
  26. item="4.9.0-4-${os_ver}" && ver='stretch' && url='deb.debian.org' && urls='deb.debian.org'
  27. else
  28. exit 1
  29. fi
  30. else
  31. exit 1
  32. fi
  33. [ -n "$item" ] && [ -n "$urls" ] && [ -n "$url" ] && [ -n "$ver" ] || exit 1
  34. if [ "$deb_relese" == 'ubuntu' ]; then
  35. echo "deb http://${url}/${deb_relese} ${ver} main restricted universe multiverse" >/etc/apt/sources.list
  36. echo "deb http://${url}/${deb_relese} ${ver}-updates main restricted universe multiverse" >>/etc/apt/sources.list
  37. echo "deb http://${url}/${deb_relese} ${ver}-backports main restricted universe multiverse" >>/etc/apt/sources.list
  38. echo "deb http://${urls}/${deb_relese} ${ver}-security main restricted universe multiverse" >>/etc/apt/sources.list
  39. elif [ "$deb_relese" == 'debian' ]; then
  40. echo "deb http://${url}/${deb_relese} ${ver} main" >/etc/apt/sources.list
  41. echo "deb-src http://${url}/${deb_relese} ${ver} main" >>/etc/apt/sources.list
  42. echo "deb http://${urls}/${deb_relese}-security ${ver}/updates main" >>/etc/apt/sources.list
  43. echo "deb-src http://${urls}/${deb_relese}-security ${ver}/updates main" >>/etc/apt/sources.list
  44. fi
  45. apt-get update
  46. apt-get install --no-install-recommends -y linux-image-${item}
  47. if [ $? -ne 0 ]; then
  48. if [ "$deb_ver" == "8" ]; then
  49. dpkg -l |grep -q 'linux-base' || {
  50. wget --no-check-certificate -qO '/tmp/linux-base_3.5_all.deb' 'http://snapshot.debian.org/archive/debian/20120304T220938Z/pool/main/l/linux-base/linux-base_3.5_all.deb'
  51. dpkg -i '/tmp/linux-base_3.5_all.deb'
  52. }
  53. wget --no-check-certificate -qO '/tmp/linux-image-3.16.0-4-amd64_3.16.43-2+deb8u5_amd64.deb' 'http://snapshot.debian.org/archive/debian/20171008T163152Z/pool/main/l/linux/linux-image-3.16.0-4-amd64_3.16.43-2+deb8u5_amd64.deb'
  54. dpkg -i '/tmp/linux-image-3.16.0-4-amd64_3.16.43-2+deb8u5_amd64.deb'
  55. if [ $? -ne 0 ]; then
  56. exit 1
  57. fi
  58. elif [ "$deb_ver" == "9" ]; then
  59. dpkg -l |grep -q 'linux-base' || {
  60. wget --no-check-certificate -qO '/tmp/linux-base_4.5_all.deb' 'http://snapshot.debian.org/archive/debian/20160917T042239Z/pool/main/l/linux-base/linux-base_4.5_all.deb'
  61. dpkg -i '/tmp/linux-base_4.5_all.deb'
  62. }
  63. wget --no-check-certificate -qO '/tmp/linux-image-4.9.0-4-amd64_4.9.65-3+deb9u1_amd64.deb' 'http://snapshot.debian.org/archive/debian/20171224T175424Z/pool/main/l/linux/linux-image-4.9.0-4-amd64_4.9.65-3+deb9u1_amd64.deb'
  64. dpkg -i '/tmp/linux-image-4.9.0-4-amd64_4.9.65-3+deb9u1_amd64.deb'
  65. if [ $? -ne 0 ]; then
  66. exit 1
  67. fi
  68. else
  69. exit 1
  70. fi
  71. else
  72. exit 1
  73. fi
  74. while true; do
  75. List_Kernel="$(dpkg -l |grep 'linux-image\|linux-modules\|linux-generic\|linux-headers' |grep -v "$item")"
  76. Num_Kernel="$(echo "$List_Kernel" |sed '/^$/d' |wc -l)"
  77. [ "$Num_Kernel" -eq "0" ] && break
  78. for kernel in `echo "$List_Kernel" |awk '{print $2}'`
  79. do
  80. if [ -f "/var/lib/dpkg/info/${kernel}.prerm" ]; then
  81. sed -i 's/linux-check-removal/#linux-check-removal/' "/var/lib/dpkg/info/${kernel}.prerm"
  82. sed -i 's/uname -r/echo purge/' "/var/lib/dpkg/info/${kernel}.prerm"
  83. fi
  84. dpkg --force-depends --purge "$kernel"
  85. done
  86. done
  87. apt-get autoremove -y
  88. [ -d '/var/lib/apt/lists' ] && find /var/lib/apt/lists -type f -delete