mirror of
https://github.com/xkatld/lxdapi-web-server.git
synced 2026-06-01 00:40:51 +08:00
117 lines
2.5 KiB
Bash
117 lines
2.5 KiB
Bash
#!/bin/bash
|
|
|
|
echo "========================================"
|
|
echo " ZFS 编译安装脚本 (Debian)"
|
|
echo " LXDAPI by Github-xkatld"
|
|
echo "========================================"
|
|
echo
|
|
|
|
LOG_DIR="/var/log/zfs_build_logs"
|
|
mkdir -p "$LOG_DIR"
|
|
LOG_FILE="${LOG_DIR}/zfs_build_$(date +%Y%m%d_%H%M%S).log"
|
|
exec &> >(tee -a "$LOG_FILE")
|
|
|
|
set -e
|
|
set -u
|
|
|
|
DEBIAN_VER=$(cat /etc/debian_version | cut -d. -f1)
|
|
ARCH=$(uname -m)
|
|
|
|
case "$DEBIAN_VER" in
|
|
11)
|
|
DEBIAN_NAME="Debian 11 (Bullseye)"
|
|
ZFS_VER="2.2.9"
|
|
;;
|
|
12)
|
|
DEBIAN_NAME="Debian 12 (Bookworm)"
|
|
ZFS_VER="2.3.5"
|
|
;;
|
|
13|trixie)
|
|
DEBIAN_NAME="Debian 13 (Trixie)"
|
|
ZFS_VER="2.3.5"
|
|
;;
|
|
*)
|
|
echo "错误: 不支持的 Debian 版本: $DEBIAN_VER"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
echo ">>> 本次操作的完整日志将保存在: ${LOG_FILE}"
|
|
echo ""
|
|
|
|
echo ">>> [1/5] 开始在 ${DEBIAN_NAME} ${ARCH} 上编译安装 OpenZFS 版本 ${ZFS_VER}"
|
|
echo ">>> 内核版本: $(uname -r)"
|
|
|
|
echo ""
|
|
echo ">>> [2/5] 正在安装编译依赖包..."
|
|
|
|
apt-get update
|
|
|
|
apt-get install -y \
|
|
build-essential \
|
|
autoconf \
|
|
automake \
|
|
libtool \
|
|
pkg-config \
|
|
linux-headers-$(uname -r) \
|
|
libtirpc-dev \
|
|
libblkid-dev \
|
|
uuid-dev \
|
|
zlib1g-dev \
|
|
libattr1-dev \
|
|
libacl1-dev \
|
|
libudev-dev \
|
|
libssl-dev \
|
|
libelf-dev \
|
|
python3 \
|
|
python3-dev \
|
|
python3-setuptools \
|
|
python3-cffi \
|
|
libffi-dev
|
|
|
|
echo ">>> 依赖包安装完成。"
|
|
|
|
echo ""
|
|
echo ">>> [3/5] 正在下载 OpenZFS v${ZFS_VER} 源码..."
|
|
|
|
WORKDIR=$(mktemp -d)
|
|
cd "${WORKDIR}"
|
|
|
|
curl -sL "https://github.com/openzfs/zfs/releases/download/zfs-${ZFS_VER}/zfs-${ZFS_VER}.tar.gz" -o "zfs-${ZFS_VER}.tar.gz"
|
|
|
|
tar -xzf "zfs-${ZFS_VER}.tar.gz"
|
|
cd "zfs-${ZFS_VER}"
|
|
|
|
echo ">>> 源码下载并解压至 ${PWD}"
|
|
|
|
echo ""
|
|
echo ">>> [4/5] 正在配置、编译、安装和注册 ZFS... (这可能需要较长时间)"
|
|
|
|
./autogen.sh
|
|
./configure
|
|
make -j$(nproc)
|
|
make install
|
|
depmod -a
|
|
ldconfig
|
|
modprobe zfs
|
|
|
|
echo ">>> ZFS 编译、安装和模块加载完成。"
|
|
|
|
echo ""
|
|
echo ">>> [5/5] 正在清理临时文件..."
|
|
|
|
cd /
|
|
rm -rf "${WORKDIR}"
|
|
|
|
echo ""
|
|
echo "=============================================================================="
|
|
echo " ZFS v${ZFS_VER} 已成功安装并加载!"
|
|
echo ""
|
|
echo " 您现在可以使用 'zpool' 和 'zfs' 命令了。"
|
|
echo " 运行 'zpool status' 来检查ZFS模块是否正常工作。"
|
|
echo "=============================================================================="
|
|
|
|
zpool status
|
|
|
|
exit 0
|