ansible-devops/scripts/system_optimize.sh

162 lines
4.8 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# 颜色定义
GREEN='\033[1;32m'
RED='\033[1;31m'
YELLOW='\033[1;33m'
NC='\033[0m' # 重置颜色
# 日志函数 - 绿色输出
log_info() {
echo -e "${GREEN}[INFO] $1${NC}"
}
# 错误函数 - 红色输出
log_error() {
echo -e "${RED}[ERROR] $1${NC}"
}
# 警告函数 - 黄色输出
log_warning() {
echo -e "${YELLOW}[WARNING] $1${NC}"
}
# 禁用apt的定期更新
disable_apt_periodic_updates() {
log_info "禁用apt的定期更新..."
# 修改10periodic配置文件将所有的1改为0禁用自动更新检查
sed -i 's/1/0/g' /etc/apt/apt.conf.d/10periodic
# 修改20auto-upgrades配置文件将所有的1改为0禁用自动升级
sed -i 's/1/0/g' /etc/apt/apt.conf.d/20auto-upgrades
log_info "apt定期更新已禁用"
}
# 设置系统时区为上海
set_timezone_to_shanghai() {
log_info "设置系统时区为上海..."
# 使用timedatectl命令设置系统时区为Asia/Shanghai
timedatectl set-timezone Asia/Shanghai
log_info "系统时区已设置为上海"
}
# 同步硬件时钟和系统时钟
synchronize_hardware_clock() {
log_info "同步硬件时钟和系统时钟..."
# 使用hwclock命令将系统时间同步到硬件时钟
hwclock --systohc
log_info "硬件时钟和系统时钟已同步"
}
# 删除"ubuntu"用户
#remove_ubuntu_user() {
# log_info "删除'ubuntu'用户..."
# # 使用userdel命令删除ubuntu用户并递归删除其主目录
# # &> /dev/null用于忽略可能的错误输出例如用户不存在的情况
# userdel -r ubuntu &> /dev/null
# log_info "已尝试删除'ubuntu'用户(如果存在)"
#}
#锁定版本号
lock_current_kernel(){
# 自动锁定当前运行的内核版本
CURRENT_KERNEL=$(uname -r)
GRUB_FILE="/etc/default/grub"
# 检查是否已锁定
if ! grep -q "GRUB_DEFAULT=.*$CURRENT_KERNEL" "$GRUB_FILE"; then
# 备份并修改GRUB配置
cp -f "$GRUB_FILE" "${GRUB_FILE}.bak"
sed -i '/GRUB_DEFAULT=/c\GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux '${CURRENT_KERNEL}'"' "$GRUB_FILE"
update-grub &>/dev/null
echo "已锁定内核版本: $CURRENT_KERNEL"
echo "稍后记得执行 'reboot' 重启系统!"
else
echo "内核版本 $CURRENT_KERNEL 已锁定,无需操作"
fi
}
# 自动扩展根逻辑卷至最大可用空间
extend_root_volume() {
local root_lv=$(df / | tail -1 | awk '{print $1}')
# 检查是否为LVM逻辑卷
if ! echo "$root_lv" | grep -q '/dev/mapper/'; then
echo "错误当前根分区不是LVM逻辑卷" >&2
return 1
fi
# 扩展逻辑卷并调整文件系统
echo "扩展逻辑卷: $lv_name"
lvresize --extents +100%FREE --resizefs $root_lv
}
# 禁止显卡驱动
disable_nouveau_driver() {
log_info "禁止nouveau显卡驱动..."
# 创建blacklist-nouveau.conf文件添加禁止nouveau驱动的配置
cat > /etc/modprobe.d/blacklist-nouveau.conf << EOF
blacklist nouveau
blacklist lbm-nouveau
options nouveau modeset=0
alias nouveau off
alias lbm-nouveau off
EOF
# 创建nouveau-kms.conf文件禁用nouveau的KMS内核模式设置
cat > /etc/modprobe.d/nouveau-kms.conf << EOF
options nouveau modeset=0
EOF
# 更新initramfs使驱动禁用配置生效
update-initramfs -u &> /dev/null
log_info "nouveau显卡驱动已被禁止"
}
# 更改GRUB配置并更新
update_grub_configuration() {
log_info "更改GRUB配置启用传统网络接口命名..."
# 检查GRUB配置中是否已存在所需的网络接口命名设置
if ! grep -q 'GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=1 biosdevname=0"' /etc/default/grub; then
# 如果不存在则注释掉原有的GRUB_CMDLINE_LINUX_DEFAULT行
sed -i '/GRUB_CMDLINE_LINUX_DEFAULT=.*/s/^/#/' /etc/default/grub
# 添加新的GRUB_CMDLINE_LINUX_DEFAULT行启用传统网络接口命名
sed -i '/GRUB_CMDLINE_LINUX_DEFAULT=.*/a\GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=1 biosdevname=0"' /etc/default/grub
fi
# 再次检查配置是否已成功添加
if grep -q 'GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=1 biosdevname=0"' /etc/default/grub; then
log_info "文件 /etc/default/grub 修改成功!"
else
log_error "文件 /etc/default/grub 修改失败!"
exit 1
fi
# 更新GRUB引导加载程序配置
update-grub &> /dev/null
log_info "GRUB配置已更新"
}
# 主函数:按顺序执行所有配置步骤
main() {
log_info "开始系统配置..."
disable_apt_periodic_updates
set_timezone_to_shanghai
lock_current_kernel
extend_root_volume
synchronize_hardware_clock
disable_nouveau_driver
update_grub_configuration
log_info "系统配置完成!"
}
# 执行主函数
main