Files
Linux/File/Shell/Build_Core_Tar.sh
offends cee91802b3
Some checks failed
continuous-integration/drone Build is failing
synchronization
2025-08-25 15:57:40 +08:00

107 lines
4.1 KiB
Bash

#!/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 $@