data: publish complete Calculet NPU research archive
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
/.
|
||||
/usr
|
||||
/usr/share
|
||||
/usr/share/doc
|
||||
/usr/share/doc/cal-pcie
|
||||
/usr/share/doc/cal-pcie/changelog.Debian.gz
|
||||
/usr/share/doc/cal-pcie/copyright
|
||||
/usr/src
|
||||
/usr/src/cal-pcie-0.9.0
|
||||
/usr/src/cal-pcie-0.9.0/Makefile
|
||||
/usr/src/cal-pcie-0.9.0/board_mgr.c
|
||||
/usr/src/cal-pcie-0.9.0/board_mgr.h
|
||||
/usr/src/cal-pcie-0.9.0/calculet_pci.mod.c
|
||||
/usr/src/cal-pcie-0.9.0/calculet_pci_core.c
|
||||
/usr/src/cal-pcie-0.9.0/calculet_pci_core.h
|
||||
/usr/src/cal-pcie-0.9.0/dkms.conf
|
||||
/usr/src/cal-pcie-0.9.0/dma.c
|
||||
/usr/src/cal-pcie-0.9.0/dma.h
|
||||
/usr/src/cal-pcie-0.9.0/fops.c
|
||||
/usr/src/cal-pcie-0.9.0/fops.h
|
||||
/usr/src/cal-pcie-0.9.0/ioctl.h
|
||||
/usr/src/cal-pcie-0.9.0/proc.c
|
||||
/usr/src/cal-pcie-0.9.0/proc.h
|
||||
/usr/src/cal-pcie-0.9.0/utils.c
|
||||
/usr/src/cal-pcie-0.9.0/utils.h
|
||||
@@ -0,0 +1,18 @@
|
||||
c589326957579b94e55a9e11adc4098c usr/share/doc/cal-pcie/changelog.Debian.gz
|
||||
a7f9bb8aebf66a03d992267809cff877 usr/share/doc/cal-pcie/copyright
|
||||
788fdcca7726bfe0a2883e0f291b380c usr/src/cal-pcie-0.9.0/Makefile
|
||||
4e755f9719aa171e82dd8d1909c29480 usr/src/cal-pcie-0.9.0/board_mgr.c
|
||||
24b662df4710a9dc482b15e5d5a1f501 usr/src/cal-pcie-0.9.0/board_mgr.h
|
||||
f720659b9f4260f2a226d1f39dcf5aac usr/src/cal-pcie-0.9.0/calculet_pci.mod.c
|
||||
daf9a5d6a4faad743f65577363930f53 usr/src/cal-pcie-0.9.0/calculet_pci_core.c
|
||||
e7185b5821ebbcc04d851f2763d17c21 usr/src/cal-pcie-0.9.0/calculet_pci_core.h
|
||||
1c5ea12ea5ef46cdc127032587e8b315 usr/src/cal-pcie-0.9.0/dkms.conf
|
||||
6692d02c13baed72ac24306c7428e288 usr/src/cal-pcie-0.9.0/dma.c
|
||||
e68fc8b3641aad7096bec1240df2b67f usr/src/cal-pcie-0.9.0/dma.h
|
||||
4cb1973a1b2da31db0816d6b9da6a53c usr/src/cal-pcie-0.9.0/fops.c
|
||||
6798c3ca8909724756f565bd29a2ddcd usr/src/cal-pcie-0.9.0/fops.h
|
||||
7bfe47920e7947dc2c4931a3ecad7b1b usr/src/cal-pcie-0.9.0/ioctl.h
|
||||
3ed33ff44b0ee698ace348f2c746f603 usr/src/cal-pcie-0.9.0/proc.c
|
||||
5c253d5cea8c5874dfbcae442b5d2799 usr/src/cal-pcie-0.9.0/proc.h
|
||||
3b20c1cd73163609e6b96abbaf58e682 usr/src/cal-pcie-0.9.0/utils.c
|
||||
2bc24094f0d939c8cbb4950650d7f8a7 usr/src/cal-pcie-0.9.0/utils.h
|
||||
+107
@@ -0,0 +1,107 @@
|
||||
#!/bin/bash
|
||||
# postinst - 安装后加载内核模块
|
||||
|
||||
set -e
|
||||
|
||||
# 当脚本由 dpkg 触发时,$DPKG_MAIN_TSN_PACKAGE 通常可用
|
||||
# 如果为空,则回退到通过文件名解析
|
||||
PACKAGE_NAME="${DPKG_MAIN_TSN_PACKAGE}"
|
||||
if [ -z "$PACKAGE_NAME" ]; then
|
||||
SCRIPT_NAME=$(basename "$0")
|
||||
PACKAGE_NAME=$(echo "$SCRIPT_NAME" | sed 's/\.postinst$//' | sed 's/\.prerm$//')
|
||||
fi
|
||||
|
||||
# 从 dpkg 数据库获取版本
|
||||
if [ -n "$PACKAGE_NAME" ]; then
|
||||
PACKAGE_VERSION=$(dpkg-query -W -f='${Version}' "$PACKAGE_NAME" 2>/dev/null)
|
||||
# 去掉 Debian 修订号(-1, -2, -ubuntu1 等)
|
||||
PACKAGE_VERSION=$(echo "$PACKAGE_VERSION" | sed 's/-.*$//')
|
||||
fi
|
||||
|
||||
DKMS_SRC_DIR="/usr/src/${PACKAGE_NAME}-${PACKAGE_VERSION}"
|
||||
|
||||
# 从预期的源码释放路径去解析驱动名称
|
||||
MAKEFILE_PATH="${DKMS_SRC_DIR}/Makefile"
|
||||
MODULE_NAME=""
|
||||
|
||||
case "$1" in
|
||||
configure)
|
||||
echo "正在配置 ${PACKAGE_NAME} 软件包..."
|
||||
|
||||
# 创建 DKMS 源码目录
|
||||
echo "创建 DKMS 源码目录: ${DKMS_SRC_DIR}"
|
||||
mkdir -p "${DKMS_SRC_DIR}"
|
||||
|
||||
# 复制源码文件到 DKMS 目录
|
||||
SOURCE_DIR="/usr/share/${PACKAGE_NAME}/source"
|
||||
if [ -d "${SOURCE_DIR}" ]; then
|
||||
echo "从 ${SOURCE_DIR} 复制源码到 DKMS 目录..."
|
||||
cp -rf "${SOURCE_DIR}"/* "${DKMS_SRC_DIR}/"
|
||||
fi
|
||||
|
||||
# 确保 dkms.conf 存在
|
||||
if [ ! -f "${DKMS_SRC_DIR}/dkms.conf" ]; then
|
||||
echo "错误: DKMS 配置文件不存在: ${DKMS_SRC_DIR}/dkms.conf" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 动态解析驱动模块名称
|
||||
if [ -f "${MAKEFILE_PATH}" ]; then
|
||||
MODULE_NAME=$(sed -n -E 's/^DRIVER_NAME[[:space:]]*:?=[[:space:]]*([^[:space:]]+).*/\1/p' "${MAKEFILE_PATH}" | head -1 | sed 's/\.ko$//')
|
||||
fi
|
||||
|
||||
# 如果 Makefile 里没解析出来,降级使用包名作为模块名
|
||||
if [ -z "$MODULE_NAME" ]; then
|
||||
MODULE_NAME="${PACKAGE_NAME}"
|
||||
fi
|
||||
echo "解析到的驱动模块名称: ${MODULE_NAME}"
|
||||
|
||||
# 设置正确的权限
|
||||
# chmod -R 644 "${DKMS_SRC_DIR}"
|
||||
|
||||
# 添加到 DKMS
|
||||
echo "添加 ${PACKAGE_NAME} 到 DKMS..."
|
||||
if ! dkms status -m "${PACKAGE_NAME}" -v "${PACKAGE_VERSION}" | grep -q "added"; then
|
||||
dkms add -m "${PACKAGE_NAME}" -v "${PACKAGE_VERSION}"
|
||||
fi
|
||||
|
||||
# 编译模块
|
||||
echo "编译内核模块..."
|
||||
dkms build -m "${PACKAGE_NAME}" -v "${PACKAGE_VERSION}"
|
||||
|
||||
# 安装模块
|
||||
echo "安装内核模块..."
|
||||
dkms install -m "${PACKAGE_NAME}" -v "${PACKAGE_VERSION}"
|
||||
|
||||
# 更新模块依赖
|
||||
echo "更新模块依赖..."
|
||||
depmod -a
|
||||
|
||||
# 加载模块
|
||||
echo "加载内核模块: ${MODULE_NAME}"
|
||||
if modprobe "${MODULE_NAME}" 2>/dev/null; then
|
||||
echo "模块 ${MODULE_NAME} 加载成功"
|
||||
else
|
||||
echo "错误: 模块 ${MODULE_NAME} 加载失败" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 设置模块开机自动加载
|
||||
if [ ! -f "/etc/modules-load.d/${PACKAGE_NAME}.conf" ]; then
|
||||
echo "配置模块开机自动加载..."
|
||||
echo "${MODULE_NAME}" > "/etc/modules-load.d/${PACKAGE_NAME}.conf"
|
||||
fi
|
||||
|
||||
echo "${PACKAGE_NAME} 安装完成"
|
||||
;;
|
||||
|
||||
abort-upgrade|abort-remove|abort-deconfigure)
|
||||
echo "安装过程被中断,不做配置"
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "postinst 被调用时参数: $1" >&2
|
||||
;;
|
||||
esac
|
||||
|
||||
exit 0
|
||||
@@ -0,0 +1,102 @@
|
||||
#!/bin/bash
|
||||
# prerm - 卸载前卸载内核模块
|
||||
set -e
|
||||
|
||||
# 当脚本由 dpkg 触发时,$DPKG_MAIN_TSN_PACKAGE 通常可用
|
||||
PACKAGE_NAME="${DPKG_MAIN_TSN_PACKAGE}"
|
||||
if [ -z "$PACKAGE_NAME" ]; then
|
||||
SCRIPT_NAME=$(basename "$0")
|
||||
PACKAGE_NAME=$(echo "$SCRIPT_NAME" | sed 's/\.postinst$//' | sed 's/\.prerm$//')
|
||||
fi
|
||||
|
||||
# 从 dpkg 数据库获取版本
|
||||
if [ -n "$PACKAGE_NAME" ]; then
|
||||
PACKAGE_VERSION=$(dpkg-query -W -f='${Version}' "$PACKAGE_NAME" 2>/dev/null)
|
||||
# 去掉 Debian 修订号(-1, -2, -ubuntu1 等)
|
||||
PACKAGE_VERSION=$(echo "$PACKAGE_VERSION" | sed 's/-.*$//')
|
||||
fi
|
||||
|
||||
DKMS_SRC_DIR="/usr/src/${PACKAGE_NAME}-${PACKAGE_VERSION}"
|
||||
MAKEFILE_ABS_PATH="${DKMS_SRC_DIR}/Makefile"
|
||||
MODULE_NAME=""
|
||||
|
||||
# 【核心修复】:使用绝对路径去解析真正的 Makefile 提取驱动名
|
||||
if [ -f "${MAKEFILE_ABS_PATH}" ]; then
|
||||
MODULE_NAME=$(sed -n -E 's/^DRIVER_NAME[[:space:]]*:?=[[:space:]]*([^[:space:]]+).*/\1/p' "${MAKEFILE_ABS_PATH}" | head -1 | sed 's/\.ko$//')
|
||||
fi
|
||||
|
||||
# 如果从 Makefile 没解析出来,降级使用包名作为模块名
|
||||
if [ -z "$MODULE_NAME" ]; then
|
||||
MODULE_NAME="${PACKAGE_NAME}"
|
||||
fi
|
||||
|
||||
case "$1" in
|
||||
remove)
|
||||
echo "正在卸载 ${PACKAGE_NAME}..."
|
||||
|
||||
# 1. 卸载内核模块
|
||||
echo "检查内核模块状态: ${MODULE_NAME}"
|
||||
if lsmod | grep -q "^${MODULE_NAME}"; then
|
||||
echo "正在从当前内核中卸载模块 ${MODULE_NAME}..."
|
||||
if rmmod "${MODULE_NAME}" 2>/dev/null; then
|
||||
echo "模块 ${MODULE_NAME} 卸载成功"
|
||||
else
|
||||
echo "警告: 模块 ${MODULE_NAME} 卸载失败,可能有其他进程正在使用它" >&2
|
||||
fi
|
||||
else
|
||||
echo "模块 ${MODULE_NAME} 当前未加载"
|
||||
fi
|
||||
|
||||
# 2. 从 DKMS 移除模块 (修复:扩大 grep 范围以兼容 added/installed 各种状态)
|
||||
if dkms status | grep -q "${PACKAGE_NAME}/${PACKAGE_VERSION}"; then
|
||||
echo "从 DKMS 移除 ${PACKAGE_NAME} ${PACKAGE_VERSION}..."
|
||||
dkms remove -m "${PACKAGE_NAME}" -v "${PACKAGE_VERSION}" --all 2>/dev/null || true
|
||||
fi
|
||||
|
||||
echo "正在强行清理 /lib/modules/ 下的所有 ${MODULE_NAME} 残留文件..."
|
||||
find /lib/modules/ -name "${MODULE_NAME}.ko*" -delete 2>/dev/null || true
|
||||
|
||||
# 3. 更新模块依赖
|
||||
echo "更新模块依赖..."
|
||||
depmod -a
|
||||
|
||||
# 4. 删除开机自动加载配置
|
||||
if [ -f "/etc/modules-load.d/${PACKAGE_NAME}.conf" ]; then
|
||||
echo "删除开机自动加载配置..."
|
||||
rm -f "/etc/modules-load.d/${PACKAGE_NAME}.conf"
|
||||
fi
|
||||
|
||||
echo "${PACKAGE_NAME} 卸载完成"
|
||||
;;
|
||||
|
||||
upgrade)
|
||||
echo "软件包升级中,清理旧版本..."
|
||||
|
||||
# 1. 升级时卸载旧版本的内核运行模块
|
||||
if lsmod | grep -q "^${MODULE_NAME}"; then
|
||||
echo "正在卸载旧版本内核运行模块..."
|
||||
rmmod "${MODULE_NAME}" 2>/dev/null || true
|
||||
fi
|
||||
|
||||
# 2. 从 DKMS 移除旧版本
|
||||
if dkms status | grep -q "${PACKAGE_NAME}/${PACKAGE_VERSION}"; then
|
||||
echo "从 DKMS 移除旧版本模块记录..."
|
||||
dkms remove -m "${PACKAGE_NAME}" -v "${PACKAGE_VERSION}" --all || true
|
||||
fi
|
||||
|
||||
# 3. 清理旧的内核模块文件 (原逻辑保留,提供兜底支持)
|
||||
rm -f /lib/modules/*/kernel/drivers/misc/${MODULE_NAME}.ko 2>/dev/null || true
|
||||
|
||||
depmod -a
|
||||
;;
|
||||
|
||||
failed-upgrade)
|
||||
echo "升级失败,保留原有配置"
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "prerm 被调用时参数: $1" >&2
|
||||
;;
|
||||
esac
|
||||
|
||||
exit 0
|
||||
Reference in New Issue
Block a user