pve/scripts/check_kernal.sh

90 lines
3.5 KiB
Bash
Raw Normal View History

2023-02-15 14:48:01 +08:00
#!/bin/bash
#from https://github.com/spiritLHLS/pve
2023-02-26 11:36:29 +08:00
# 用颜色输出信息
2023-02-15 17:26:13 +08:00
_red() { echo -e "\033[31m\033[01m$@\033[0m"; }
_green() { echo -e "\033[32m\033[01m$@\033[0m"; }
_yellow() { echo -e "\033[33m\033[01m$@\033[0m"; }
_blue() { echo -e "\033[36m\033[01m$@\033[0m"; }
2023-04-24 09:19:40 +08:00
reading(){ read -rp "$(_green "$1")" "$2"; }
2023-04-27 11:26:53 +08:00
utf8_locale=$(locale -a 2>/dev/null | grep -i -m 1 -E "UTF-8|utf8")
2023-04-27 11:08:53 +08:00
if [[ -z "$utf8_locale" ]]; then
2023-04-27 11:26:53 +08:00
echo "No UTF-8 locale found"
2023-04-24 08:56:06 +08:00
else
2023-04-27 11:08:53 +08:00
export LC_ALL="$utf8_locale"
export LANG="$utf8_locale"
export LANGUAGE="$utf8_locale"
2023-04-27 11:26:53 +08:00
echo "Locale set to $utf8_locale"
2023-04-24 08:56:06 +08:00
fi
2023-04-24 08:35:39 +08:00
2023-04-27 17:18:15 +08:00
check_config(){
2023-05-28 18:16:57 +08:00
_green "本机配置应当满足至少2核2G内存20G硬盘的最低要求"
# 检查硬盘大小
total_disk=$(df -h / | awk '/\//{print $2}')
total_disk_num=$(echo $total_disk | sed 's/G//')
if [ "$total_disk_num" -lt 20 ]; then
_red "本机配置不满足最低要求至少20G硬盘"
_red "本机硬盘配置无法安装PVE"
fi
2023-04-27 17:18:15 +08:00
# 检查CPU核心数
cpu_cores=$(grep -c ^processor /proc/cpuinfo)
if [ "$cpu_cores" -lt 2 ]; then
_red "本机配置不满足最低要求至少2核CPU"
2023-05-28 18:16:57 +08:00
_red "本机CPU数量配置无法安装PVE"
2023-04-27 17:18:15 +08:00
fi
2023-05-28 18:16:57 +08:00
2023-04-27 17:18:15 +08:00
# 检查内存大小
total_mem=$(free -m | awk '/^Mem:/{print $2}')
if [ "$total_mem" -lt 2048 ]; then
_red "本机配置不满足最低要求至少2G内存"
2023-05-28 18:16:57 +08:00
_red "本机内存配置无法安装PVE (未计算SWAP如若SWAP的虚拟内存加上本机实际内存大于2G请忽略本提示)"
2023-04-27 17:18:15 +08:00
fi
}
check_config
2023-02-15 14:48:01 +08:00
# 检查CPU是否支持硬件虚拟化
if [ "$(egrep -c '(vmx|svm)' /proc/cpuinfo)" -eq 0 ]; then
2023-04-25 14:26:48 +08:00
_yellow "CPU不支持硬件虚拟化无法嵌套虚拟化KVM服务器但可以开LXC服务器(CT)"
2023-02-15 15:34:21 +08:00
exit 1
2023-02-26 11:36:29 +08:00
else
_green "本机CPU支持KVM硬件嵌套虚拟化"
2023-02-15 14:48:01 +08:00
fi
# 检查虚拟化选项是否启用
if [ "$(grep -E -c '(vmx|svm)' /proc/cpuinfo)" -eq 0 ]; then
2023-04-25 14:26:48 +08:00
_yellow "BIOS中未启用硬件虚拟化无法嵌套虚拟化KVM服务器但可以开LXC服务器(CT)"
2023-02-15 15:34:21 +08:00
exit 1
2023-02-26 11:36:29 +08:00
else
2023-05-06 22:03:44 +08:00
_green "本机BIOS已启用支持KVM硬件嵌套虚拟化"
2023-02-15 14:48:01 +08:00
fi
2023-02-26 10:03:02 +08:00
# 查询系统是否支持
2023-04-25 14:31:00 +08:00
if [ -e "/sys/module/kvm_intel/parameters/nested" ] && [ "$(cat /sys/module/kvm_intel/parameters/nested | tr '[:upper:]' '[:lower:]')" = "y" ]; then
2023-05-06 22:03:44 +08:00
CPU_TYPE="intel"
elif [ -e "/sys/module/kvm_amd/parameters/nested" ] && [ "$(cat /sys/module/kvm_amd/parameters/nested | tr '[:upper:]' '[:lower:]')" = "1" ]; then
CPU_TYPE="amd"
2023-02-26 10:03:02 +08:00
else
2023-05-06 22:51:48 +08:00
_yellow "本机系统配置文件识别到不支持KVM硬件嵌套虚拟化使用PVE虚拟化出来的KVM服务器可能不能在选项中开启KVM硬件虚拟化如果使用NOVNC有问题记得在开出来的KVM服务器选项中关闭以实际能否使用为准"
2023-02-26 20:51:02 +08:00
exit 1
2023-02-26 10:03:02 +08:00
fi
2023-05-06 22:08:02 +08:00
if ! lsmod | grep -q kvm; then
if [ "$CPU_TYPE" = "intel" ]; then
_yellow "KVM模块未加载不能使用PVE虚拟化KVM服务器但可以开LXC服务器(CT)"
elif [ "$CPU_TYPE" = "amd" ]; then
_yellow "KVM模块未加载不能使用PVE虚拟化KVM服务器但可以开LXC服务器(CT)"
fi
else
_green "本机符合要求可以使用PVE虚拟化KVM服务器并可以在开出来的KVM服务器选项中开启KVM硬件虚拟化"
2023-05-06 22:03:44 +08:00
fi
2023-02-26 10:03:02 +08:00
2023-02-26 11:36:29 +08:00
# 如果KVM模块未加载则加载KVM模块并将其添加到/etc/modules文件中
if ! lsmod | grep -q kvm; then
2023-02-26 11:38:15 +08:00
_yellow "尝试加载KVM模块……"
2023-02-15 14:48:01 +08:00
modprobe kvm
echo "kvm" >> /etc/modules
2023-05-06 22:08:02 +08:00
_green "KVM模块已尝试加载并添加到 /etc/modules可以尝试使用PVE虚拟化KVM服务器也可以开LXC服务器(CT)"
2023-02-15 14:48:01 +08:00
fi