2025-07-05 15:49:53 +08:00
|
|
|
|
|
|
|
|
|
|
#!/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}"
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-07-18 16:46:40 +08:00
|
|
|
|
|
|
|
|
|
|
# 安装系统常用工具
|
|
|
|
|
|
install_sysadmin_tools() {
|
2025-07-18 18:35:42 +08:00
|
|
|
|
log_info "[01]-安装系统常用工具包"
|
2025-07-18 18:07:48 +08:00
|
|
|
|
apt update &>/dev/null;
|
2025-10-20 13:46:46 +08:00
|
|
|
|
NEEDRESTART_MODE=a DEBIAN_FRONTEND=noninteractive apt install net-tools ipmitool lrzsz iotop iftop zip unzip jq build-essential lldpd nfs-common -y &>/dev/null;
|
2025-07-18 18:48:13 +08:00
|
|
|
|
log_info "[01]-常用工具包安装---------------------已完成!"
|
2025-07-18 16:46:40 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2025-07-05 15:49:53 +08:00
|
|
|
|
# 禁用apt的定期更新
|
|
|
|
|
|
disable_apt_periodic_updates() {
|
2025-07-18 18:46:54 +08:00
|
|
|
|
log_info "[02]-禁用Apt定期更新功能"
|
2025-07-05 15:49:53 +08:00
|
|
|
|
# 修改10periodic配置文件,将所有的1改为0,禁用自动更新检查
|
2025-07-18 18:16:42 +08:00
|
|
|
|
sed -i 's/1/0/g' /etc/apt/apt.conf.d/10periodic &>/dev/null;
|
2025-07-05 15:49:53 +08:00
|
|
|
|
# 修改20auto-upgrades配置文件,将所有的1改为0,禁用自动升级
|
2025-07-18 18:16:42 +08:00
|
|
|
|
sed -i 's/1/0/g' /etc/apt/apt.conf.d/20auto-upgrades &>/dev/null;
|
2025-07-18 18:53:04 +08:00
|
|
|
|
log_info "[02]-禁用Apt定期更新功能----------------已完成!"
|
2025-07-05 15:49:53 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2025-07-18 16:46:40 +08:00
|
|
|
|
|
|
|
|
|
|
|
2025-07-05 15:49:53 +08:00
|
|
|
|
# 设置系统时区为上海
|
|
|
|
|
|
set_timezone_to_shanghai() {
|
2025-07-18 18:35:42 +08:00
|
|
|
|
log_info "[03]-设置系统时区为上海时区"
|
2025-07-05 15:49:53 +08:00
|
|
|
|
# 使用timedatectl命令设置系统时区为Asia/Shanghai
|
|
|
|
|
|
timedatectl set-timezone Asia/Shanghai
|
2025-07-18 18:54:31 +08:00
|
|
|
|
log_info "[03]-设置系统时区为上海时区-------------已完成!"
|
2025-07-05 15:49:53 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2025-07-18 16:46:40 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-07-05 15:49:53 +08:00
|
|
|
|
# 同步硬件时钟和系统时钟
|
|
|
|
|
|
synchronize_hardware_clock() {
|
2025-07-18 19:01:53 +08:00
|
|
|
|
log_info "[04]-同步系统硬件时钟操作中"
|
2025-07-05 15:49:53 +08:00
|
|
|
|
# 使用hwclock命令将系统时间同步到硬件时钟
|
2025-07-16 12:48:17 +08:00
|
|
|
|
hwclock --systohc
|
2025-07-18 19:01:53 +08:00
|
|
|
|
log_info "[04]-同步系统硬件时钟操作中-------------已完成!"
|
2025-07-05 15:49:53 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2025-07-16 13:10:31 +08:00
|
|
|
|
#关闭休眠
|
|
|
|
|
|
off_sleep(){
|
2025-07-18 19:06:53 +08:00
|
|
|
|
log_info "[05]-执行关闭系统休眠操作"
|
2025-07-16 13:10:31 +08:00
|
|
|
|
systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target &>> /tmp/2.log
|
2025-07-18 19:04:03 +08:00
|
|
|
|
log_info "[05]-执行关闭系统休眠操作---------------已完成!"
|
2025-07-16 13:10:31 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-07-05 15:49:53 +08:00
|
|
|
|
# 删除"ubuntu"用户
|
2025-10-14 10:24:50 +08:00
|
|
|
|
remove_ubuntu_user() {
|
|
|
|
|
|
log_info "[11]-删除'ubuntu'用户..."
|
|
|
|
|
|
# 使用userdel命令删除ubuntu用户,并递归删除其主目录
|
2025-07-05 15:49:53 +08:00
|
|
|
|
# # &> /dev/null用于忽略可能的错误输出(例如用户不存在的情况)
|
2025-10-14 10:24:50 +08:00
|
|
|
|
pkill -9 -u ubuntu &> /dev/null
|
|
|
|
|
|
userdel -r ubuntu &> /dev/null
|
|
|
|
|
|
log_info "[11]-删除'ubuntu'用户----------------已完成!"
|
|
|
|
|
|
}
|
2025-07-05 15:49:53 +08:00
|
|
|
|
|
2025-07-15 16:36:18 +08:00
|
|
|
|
#锁定版本号
|
|
|
|
|
|
lock_current_kernel(){
|
2025-07-18 19:06:53 +08:00
|
|
|
|
log_info "[06]-执行系统内核锁定操作"
|
2025-07-15 16:36:18 +08:00
|
|
|
|
# 自动锁定当前运行的内核版本
|
|
|
|
|
|
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
|
2025-07-18 19:04:03 +08:00
|
|
|
|
log_info "[06]-执行系统内核锁定操作---------------已完成!"
|
2025-07-15 16:36:18 +08:00
|
|
|
|
else
|
2025-07-18 19:04:03 +08:00
|
|
|
|
log_info "[06]-执行系统内核锁定操作---------------已完成!"
|
2025-07-15 16:36:18 +08:00
|
|
|
|
fi
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-07-15 16:58:56 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 自动扩展根逻辑卷至最大可用空间
|
|
|
|
|
|
extend_root_volume() {
|
2025-07-18 19:06:53 +08:00
|
|
|
|
log_info "[07]-执行根分区扩容操作"
|
2025-07-15 16:58:56 +08:00
|
|
|
|
local root_lv=$(df / | tail -1 | awk '{print $1}')
|
|
|
|
|
|
# 检查是否为LVM逻辑卷
|
|
|
|
|
|
if ! echo "$root_lv" | grep -q '/dev/mapper/'; then
|
2025-07-18 18:35:42 +08:00
|
|
|
|
echo "[07]-错误:当前根分区不是LVM逻辑卷" >&2
|
2025-07-15 16:58:56 +08:00
|
|
|
|
return 1
|
|
|
|
|
|
fi
|
|
|
|
|
|
# 扩展逻辑卷并调整文件系统
|
2025-07-18 16:46:40 +08:00
|
|
|
|
#log_info "扩展逻辑卷: $root_lv"
|
2025-07-15 17:15:17 +08:00
|
|
|
|
if lvresize --extents +100%FREE --resizefs "$root_lv" &>/dev/null; then
|
2025-07-16 13:01:24 +08:00
|
|
|
|
root_lvsize=$(df -h / | awk 'NR==2 {print "磁盘磁盘根分区大小:",$2}')
|
2025-07-18 18:53:04 +08:00
|
|
|
|
log_info "[07]-执行根分区扩容操作-----------------已完成!"
|
2025-07-15 17:15:17 +08:00
|
|
|
|
else
|
2025-07-18 18:53:04 +08:00
|
|
|
|
log_info "[07]]-执行根分区扩容操作-----------------失败!"
|
2025-07-15 17:15:17 +08:00
|
|
|
|
return 1
|
|
|
|
|
|
fi
|
|
|
|
|
|
}
|
2025-07-15 16:58:56 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-07-05 15:49:53 +08:00
|
|
|
|
# 禁止显卡驱动
|
|
|
|
|
|
disable_nouveau_driver() {
|
2025-07-18 19:06:53 +08:00
|
|
|
|
log_info "[08]-禁止nouveau显卡驱动"
|
2025-07-05 15:49:53 +08:00
|
|
|
|
|
|
|
|
|
|
# 创建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
|
|
|
|
|
|
|
2025-07-18 18:59:39 +08:00
|
|
|
|
log_info "[08]-禁止nouveau显卡驱动----------------已完成!"
|
2025-07-05 15:49:53 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
# 更改GRUB配置并更新
|
|
|
|
|
|
update_grub_configuration() {
|
2025-07-18 19:06:53 +08:00
|
|
|
|
log_info "[09]-配置 GRUB 网络接口命名"
|
2025-07-05 15:49:53 +08:00
|
|
|
|
|
|
|
|
|
|
# 检查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
|
2025-07-18 18:53:04 +08:00
|
|
|
|
log_info "[09]-配置 GRUB 网络接口命名-------------已完成!"
|
2025-07-05 15:49:53 +08:00
|
|
|
|
else
|
2025-07-18 18:35:42 +08:00
|
|
|
|
log_error "[09]-GRUB 网络接口命名配置失败"
|
2025-07-05 15:49:53 +08:00
|
|
|
|
exit 1
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
# 更新GRUB引导加载程序配置
|
|
|
|
|
|
update-grub &> /dev/null
|
2025-07-18 16:46:40 +08:00
|
|
|
|
|
2025-07-05 15:49:53 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2025-07-15 17:28:43 +08:00
|
|
|
|
#修改主机名
|
|
|
|
|
|
rename_hostname(){
|
2025-07-18 19:06:53 +08:00
|
|
|
|
log_info "[09]-修改主机名称"
|
2025-07-15 17:28:43 +08:00
|
|
|
|
IP=$(ip addr | awk '/^[0-9]+: / {}; /inet.*global/ {print gensub(/(.*)\/(.*)/, "\\1", "g", $2)}' | grep `ip route | grep default | awk '{print $3}' | awk -F. '{print $1"."$2}' | head -1` | head -1 | sed 's/\./-/g')
|
|
|
|
|
|
hostnamectl set-hostname ${IP}
|
2025-07-18 19:04:03 +08:00
|
|
|
|
log_info "[09]-主机名称修改操作-------------------已完成!"
|
2025-07-15 17:28:43 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2025-07-18 16:46:40 +08:00
|
|
|
|
|
|
|
|
|
|
|
2025-07-16 13:22:09 +08:00
|
|
|
|
#清理历史命令
|
|
|
|
|
|
clear_history(){
|
2025-07-18 19:06:53 +08:00
|
|
|
|
log_info "[10]-执行清理历史命令"
|
2025-07-16 13:22:09 +08:00
|
|
|
|
> ~/.bash_history
|
|
|
|
|
|
history -c
|
2025-07-18 19:04:03 +08:00
|
|
|
|
log_info "[10]-执行清理历史命令-------------------已完成!"
|
2025-07-16 13:22:09 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-07-15 17:28:43 +08:00
|
|
|
|
|
2025-07-05 15:49:53 +08:00
|
|
|
|
# 主函数:按顺序执行所有配置步骤
|
|
|
|
|
|
main() {
|
2025-07-18 18:22:14 +08:00
|
|
|
|
log_info "|#################开始系统配置#################|"
|
2025-07-18 16:46:40 +08:00
|
|
|
|
install_sysadmin_tools
|
2025-07-05 15:49:53 +08:00
|
|
|
|
disable_apt_periodic_updates
|
|
|
|
|
|
set_timezone_to_shanghai
|
2025-07-19 08:35:36 +08:00
|
|
|
|
synchronize_hardware_clock
|
2025-07-19 08:31:16 +08:00
|
|
|
|
off_sleep
|
2025-07-15 16:36:18 +08:00
|
|
|
|
lock_current_kernel
|
2025-07-15 16:58:56 +08:00
|
|
|
|
extend_root_volume
|
2025-07-05 15:49:53 +08:00
|
|
|
|
disable_nouveau_driver
|
|
|
|
|
|
update_grub_configuration
|
2025-07-15 17:28:43 +08:00
|
|
|
|
rename_hostname
|
2025-10-14 10:41:57 +08:00
|
|
|
|
remove_ubuntu_user
|
2025-07-16 13:22:09 +08:00
|
|
|
|
clear_history
|
2025-07-18 19:09:40 +08:00
|
|
|
|
log_info "|##############################################|"
|
2025-07-18 18:22:14 +08:00
|
|
|
|
log_info "|操作完成后,请通过以下命令重启系统!"
|
2025-07-18 16:46:40 +08:00
|
|
|
|
log_info "|ipmitool chassis power cycle"
|
2025-07-19 08:31:16 +08:00
|
|
|
|
log_info "|#################系统配置完成!###############|"
|
2025-07-05 15:49:53 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
# 执行主函数
|
|
|
|
|
|
main
|