XanMod Kernel 一键安装脚本 (适用于 Debian/Ubuntu 及其衍生版)
这个脚本会 自动完成所有必要步骤 :
- 检查并安装依赖:确保
curl
,gawk
,gpg
等必要工具存在。 - 自动检测 CPU 级别 :运行官方检查脚本,判断您的 CPU 支持
v2
,v3
还是v4
。 - 自动构建软件包名 :根据检测结果,确定要安装的包是
linux-xanmod-x64v2
还是linux-xanmod-x64v3
等。 - 添加 GPG 密钥和 APT 仓库 。
- 更新软件包列表并安装选定的内核 。
- 提供清晰的彩色输出 ,让您知道每一步都在做什么。
- 包含完整的错误检查 ,任何一步失败都会停止并报告错误。
一键安装命令
您只需复制下面这一行命令,粘贴到您的终端中,然后按回车键即可。脚本会请求您输入 sudo
密码。
bash <(curl -sL https://cdn.vdj.me/shell_scripts/install-xanmod.sh)
脚本完整内容
这是上面一键命令所执行的脚本的全部代码,您可以审查它以确保其安全性。
#!/bin/bash
# ==============================================================================
# XanMod Kernel 一键安装脚本 (适用于 Debian/Ubuntu 及其衍生版) - v1.1
#
# 更新日志:
# v1.2 - 新增检查当前发行版是否被支持
# v1.1 - 修正了对 lsb-release 依赖的检查逻辑。
#
# 功能:
# 1. 自动检查并提示安装依赖。
# 2. 自动检测 CPU 的 x86-64 psABI 级别 (v2, v3, v4)。
# 3. 自动添加 XanMod 的 GPG 密钥和 APT 仓库。
# 4. 自动安装与您 CPU 最匹配的 XanMod 内核版本。
# 5. 全程提供清晰的彩色日志和错误处理。
# ==============================================================================
# --- 配置 ---
# 设置颜色代码以便输出
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
NC='\033[0m' # No Color
# --- 函数定义 ---
log_info() {
echo -e "${GREEN}[INFO]${NC} $1"
}
log_warn() {
echo -e "${YELLOW}[WARN]${NC} $1"
}
log_error() {
echo -e "${RED}[ERROR]${NC} $1"
}
# --- 脚本开始 ---
clear
echo -e "${GREEN}===========================================${NC}"
echo -e "${GREEN}== XanMod Kernel 一键安装脚本 ==${NC}"
echo -e "${GREEN}===========================================${NC}"
echo
# 1. 权限检查:确保以 root 用户身份运行
if [[ $EUID -ne 0 ]]; then
# 如果不是 root,尝试使用 sudo 重新执行脚本
log_warn "此脚本需要 root 权限,正在尝试使用 sudo 重新运行..."
# exec sudo bash "$0" "$@" # 在交互式 shell 中这可能导致问题,直接提示更好
log_error "请使用 'sudo' 或以 root 用户身份运行此脚本。"
exit 1
fi
# 2. 依赖检查:确保必要的工具已安装
# --- 修正点 ---
# 将依赖检查中的 "lsb-release" (包名) 修改为 "lsb_release" (命令名)
DEPS=("curl" "gawk" "gpg" "lsb_release" "wget")
MISSING_DEPS_PKGS=() # 用于存放需要安装的包名
log_info "正在检查必要的依赖工具..."
for dep_cmd in "${DEPS[@]}"; do
if ! command -v "$dep_cmd" &> /dev/null; then
# 将命令名转换回可能的包名
pkg_name="${dep_cmd//_/-}"
MISSING_DEPS_PKGS+=("$pkg_name")
fi
done
if [ ${#MISSING_DEPS_PKGS[@]} -gt 0 ]; then
log_error "检测到以下依赖缺失: ${MISSING_DEPS_PKGS[*]}"
log_info "请先运行 'sudo apt update && sudo apt install ${MISSING_DEPS_PKGS[*]}' 安装它们。"
exit 1
fi
log_info "所有依赖均已满足。"
echo
# 3. 检测 CPU 支持的 x86-64 psABI 级别
log_info "正在检测您的 CPU x86-64 psABI 级别..."
CHECK_URL="https://dl.xanmod.org/check_x86-64_psabi.sh"
CPU_CHECK_OUTPUT=$(curl -s "$CHECK_URL" | gawk -f -)
if [ -z "$CPU_CHECK_OUTPUT" ]; then
log_error "无法从 $CHECK_URL 获取 CPU 信息。请检查您的网络连接。"
exit 1
fi
ABI_VERSION=$(echo "$CPU_CHECK_OUTPUT" | grep -oP 'x86-64-v\K\d')
if [ -z "$ABI_VERSION" ]; then
log_error "无法解析 CPU 支持级别。脚本输出为: $CPU_CHECK_OUTPUT"
log_info "这可能意味着您的 CPU 非常老旧,不支持任何优化级别。脚本无法继续。"
exit 1
fi
log_info "检测到您的 CPU 支持: x86-64-v${ABI_VERSION}"
# 根据 XanMod 仓库规则调整版本
if [ "$ABI_VERSION" -ge 3 ]; then
INSTALL_VERSION="v3"
else
INSTALL_VERSION="v2"
fi
PACKAGE_NAME="linux-xanmod-x64${INSTALL_VERSION}"
log_info "根据您的 CPU 和 XanMod 仓库情况,将为您安装软件包: ${YELLOW}${PACKAGE_NAME}${NC}"
echo
# 新增一个支持的发行版列表
SUPPORTED_DISTROS=("bookworm" "trixie" "sid" "noble" "oracular" "plucky" "questing" "faye" "wilma" "xia")
DISTRO_CODENAME=$(lsb_release -sc)
# 检查当前发行版是否被支持
if [[ ! " ${SUPPORTED_DISTROS[*]} " =~ " ${DISTRO_CODENAME} " ]]; then
log_error "您的操作系统 '${DISTRO_CODENAME}' 已不受 XanMod 官方 APT 仓库支持。"
log_info "支持的发行版列表为: ${SUPPORTED_DISTROS[*]}"
log_info "建议您采用手动下载 .deb 包的方式进行安装,或将系统升级到受支持的版本。"
exit 1
fi
# 4. 添加 XanMod GPG 密钥
KEYRING_PATH="/etc/apt/keyrings/xanmod-archive-keyring.gpg"
log_info "正在添加 XanMod GPG 密钥到 ${KEYRING_PATH}..."
if wget -qO - https://dl.xanmod.org/archive.key | gpg --dearmor -vo "$KEYRING_PATH"; then
log_info "GPG 密钥添加成功。"
else
log_error "添加 GPG 密钥失败。"
exit 1
fi
echo
# 5. 添加 XanMod APT 仓库
SOURCE_LIST_PATH="/etc/apt/sources.list.d/xanmod-release.list"
DISTRO_CODENAME=$(lsb_release -sc)
log_info "正在为您的发行版 '${DISTRO_CODENAME}' 添加 XanMod APT 仓库..."
echo "deb [signed-by=${KEYRING_PATH}] http://deb.xanmod.org ${DISTRO_CODENAME} main" | tee "$SOURCE_LIST_PATH" > /dev/null
if [ $? -eq 0 ]; then
log_info "APT 仓库添加成功。"
else
log_error "添加 APT 仓库失败。"
exit 1
fi
echo
# 6. 更新软件包列表并安装内核
log_info "正在更新软件包列表 (apt update)..."
if ! apt-get update; then
log_error "运行 'apt update' 失败。请检查您的软件源配置和网络。"
exit 1
fi
log_info "软件包列表更新成功。"
echo
log_info "准备安装内核: ${YELLOW}${PACKAGE_NAME}${NC}"
log_warn "安装过程可能需要一些时间,请耐心等待..."
if ! apt-get install -y "$PACKAGE_NAME"; then
log_error "安装 ${PACKAGE_NAME} 失败。请检查上面的错误信息。"
exit 1
fi
# --- 结束 ---
echo
echo -e "${GREEN}======================================================${NC}"
log_info "恭喜!XanMod 内核 (${PACKAGE_NAME}) 已成功安装!"
log_warn "为了使用新内核,您需要 ${YELLOW}重启您的系统${NC}。"
log_info "您可以使用 'reboot' 命令来重启。"
echo
log_info "如果需要为 NVIDIA 驱动等构建外部内核模块 (dkms),"
log_info "建议安装以下依赖: ${YELLOW}apt install dkms libdw-dev clang lld llvm${NC}"
echo -e "${GREEN}======================================================${NC}"
exit 0