#!/bin/bash ############################################################################################# # 用途: 本脚本用于大包内核离线升级包 # 作者: 丁辉 # 编写时间: 2023-12-03 # 更新时间: 2024-05-20 ############################################################################################# # 加载检测脚本 source <(curl -sS https://gitee.com/offends/Linux/raw/main/File/Shell/Check_command.sh) # Centos内核文件: https://elrepo.org/linux/kernel/ # Ubuntu内核文件: https://kernel.ubuntu.com/mainline/ 国内: https://mirrors.edge.kernel.org/pub/linux/kernel/ # 存放Cenots8内核RPM文件包数组 Centos8_RPM=( "https://elrepo.org/linux/kernel/el8/x86_64/RPMS/kernel-lt-5.4.262-1.el8.elrepo.x86_64.rpm" "https://elrepo.org/linux/kernel/el8/x86_64/RPMS/kernel-lt-modules-5.4.262-1.el8.elrepo.x86_64.rpm" "https://elrepo.org/linux/kernel/el8/x86_64/RPMS/kernel-lt-core-5.4.262-1.el8.elrepo.x86_64.rpm" ) Centos7_RPM=( "https://elrepo.org/linux/kernel/el7/x86_64/RPMS/kernel-lt-5.4.262-1.el7.elrepo.x86_64.rpm" ) function CURL_UBUNTU_DEB(){ CHECK_CPU SEND_INFO "正在下载内核DEB文件包,请稍后" VERSION=$(curl -s https://kernel.ubuntu.com/mainline/ | awk -F 'href="' '{print $2}' | awk -F '/"' '{print $1}' | sort -V | grep -v rc | grep -v Name | tail -n 1) FILES=$(curl -s https://kernel.ubuntu.com/mainline/v6.6.4/amd64/ | grep deb | awk -F 'href="' '{print $2}' | awk -F '.deb' '{print $1".deb"}' | grep -v linux-headers) URL="https://kernel.ubuntu.com/mainline/$VERSION/$ARCH_TYPE_2" for i in ${FILES[@]} do curl -sO $URL/$i done VERSION="Ubuntu" SEND_INFO "开始打包: $VERSION 离线内核升级包" CHECK_COMMAND_ECHO rm -rf linux-headers-* curl -sO https://gitee.com/offends/Linux/raw/main/File/Shell/Check_command.sh sed -i.bak 's/source <(curl -sS https:\/\/gitee.com\/offends\/Linux\/raw\/main\/File\/Shell\/Check_command.sh)/source .\/Check_command.sh/g' Core.sh CHECK_COMMAND_ECHO tar -zcvf $VERSION\_Core.tar.gz *.deb Check_command.sh Core.sh SEND_INFO "正在清理临时文件" CHECK_COMMAND_ECHO rm -rf *.deb && mv Core.sh.bak Core.sh } function CHECK_CENTOS_FILE(){ SEND_INFO "开始打包: $VERSION 离线内核升级包" curl -sO https://gitee.com/offends/Linux/raw/main/File/Shell/Check_command.sh sed -i.bak 's/source <(curl -sS https:\/\/gitee.com\/offends\/Linux\/raw\/main\/File\/Shell\/Check_command.sh)/source .\/Check_command.sh/g' Core.sh CHECK_COMMAND_ECHO tar -zcvf $VERSION\_Core.tar.gz *.rpm Check_command.sh Core.sh SEND_INFO "正在清理临时文件" CHECK_COMMAND_ECHO rm -rf *.rpm && mv Core.sh.bak Core.sh } # 判断用户传入的参数为哪个系统 function CHECK_USER_READ(){ case $1 in Centos7) SEND_INFO "正在下载内核RPM文件包,请稍后" for i in ${Centos7_RPM[@]} do curl -sO $i VERSION="CentOS7" done CHECK_CENTOS_FILE ;; Centos8) SEND_INFO "正在下载内核RPM文件包,请稍后" for i in ${Centos8_RPM[@]} do curl -sO $i VERSION="CentOS8" done CHECK_CENTOS_FILE ;; Ubuntu) CURL_UBUNTU_DEB ;; --help | -h) echo "Usage: script_name [OPTIONS] [ARGUMENTS]" echo "" echo "Description:" echo " Offends" echo "" echo "Options:" echo " -h, --help 显示此帮助信息" echo " Centos7 打包Centos7内核离线包" echo " Centos8 打包Centos8内核离线包" echo " Ubuntu 打包Centos8内核离线包" echo "" echo "Examples:" echo " 示例 1: ./Build_Core_Tar.sh Centos7" exit 0 ;; *) SEND_ERROR "参数错误,请使用 --help,-h 查看支持版本" ;; esac } function ALL(){ CHECK_NETWORK CHECK_USER_READ $@ } ALL $@