From ccdbed9f772fbe30aa4b4f20500bd2ca0396ce2a Mon Sep 17 00:00:00 2001 From: root Date: Tue, 29 Oct 2024 20:13:21 +0800 Subject: [PATCH] add nvme_inject_install.sh --- .../selftest/test/nvme/nvme_inject_install.sh | 74 +++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 sysSentry-1.0.2/selftest/test/nvme/nvme_inject_install.sh diff --git a/sysSentry-1.0.2/selftest/test/nvme/nvme_inject_install.sh b/sysSentry-1.0.2/selftest/test/nvme/nvme_inject_install.sh new file mode 100644 index 0000000..ab212fc --- /dev/null +++ b/sysSentry-1.0.2/selftest/test/nvme/nvme_inject_install.sh @@ -0,0 +1,74 @@ +#!/bin/bash + +# 检查是否输入了两个参数 +if [ $# -ne 2 ]; then + echo "使用方法: $0 " + exit 1 +fi + +# 定义变量 +KERNEL_SOURCE_PATH="$1" +SYSSENTRY_PATH="$2" +KERNEL_RPM="kernel-source-4.19.90-2101.1.0.0055.oe1.aarch64.rpm" +NVME_INJECT_PATCH="${SYSSENTRY_PATH}/sysSentry/sysSentry-1.0.2/selftest/test/nvme/patch/nvme_inject.patch" +MODULE_DEST="/lib/modules/4.19.90-23.48.v2101.ky10.aarch64/extra/hiodriver" +SYS_SENTRY_PATH="${SYSSENTRY_PATH}/sysSentry/sysSentry-1.0.2/selftest/test/nvme" + +echo "开始执行安装脚本..." + +# 步骤1: 切换到内核源码目录,若没有则创建目录 +echo "步骤1: 切换到内核源码目录,若没有则创建目录..." +if [ ! -d "$KERNEL_SOURCE_PATH" ]; then + mkdir -p "$KERNEL_SOURCE_PATH" || { echo "创建内核源码目录失败"; exit 1; } +fi +cd "$KERNEL_SOURCE_PATH" || { echo "切换目录失败"; exit 1; } + +# 步骤2: 使用rpm2cpio和cpio提取内核源码包 +echo "步骤2: 提取内核源码包..." +rpm2cpio "$KERNEL_RPM" | cpio -div || { echo "提取内核源码包失败"; exit 1; } + +# 步骤3: 复制补丁文件到内核源码目录 +echo "步骤3: 复制补丁文件到内核源码目录..." +cp "$NVME_INJECT_PATCH" "$KERNEL_SOURCE_PATH/usr/src/linux-4.19.90-2101.1.0.0055.oe1.aarch64/drivers/nvme/host/" || { echo "复制补丁文件失败"; exit 1; } + +# 步骤4: 切换到内核源码的drivers/nvme/host目录 +echo "步骤4: 切换到内核源码的drivers/nvme/host目录..." +cd "$KERNEL_SOURCE_PATH/usr/src/linux-4.19.90-2101.1.0.0055.oe1.aarch64/drivers/nvme/host" || { echo "切换目录失败"; exit 1; } + +# 步骤5: 应用补丁 +echo "步骤5: 应用补丁..." +patch -p0 < "$NVME_INJECT_PATCH" || { echo "应用补丁失败"; exit 1; } + +# 步骤6: 清理之前的编译文件 +echo "步骤6: 清理之前的编译文件..." +make clean || { echo "清理编译文件失败"; exit 1; } + +# 步骤7: 编译模块 +echo "步骤7: 编译模块..." +make || { echo "编译模块失败"; exit 1; } + +# 步骤8: 复制编译好的模块到模块目录,若没有则创建目录 +echo "步骤8: 复制编译好的模块到模块目录,若没有则创建目录..." +if [ ! -d "$MODULE_DEST" ]; then + mkdir -p "$MODULE_DEST" || { echo "创建模块目录失败"; exit 1; } +fi +cp nvme.ko "$MODULE_DEST" || { echo "复制模块失败"; exit 1; } + +# 步骤9: 卸载NVMe设备 +echo "步骤9: 卸载NVMe设备..." +if mount | grep -q /dev/nvme0n1; then + umount /dev/nvme0n1 || { echo "卸载NVMe设备失败"; exit 1; } +else + echo "/dev/nvme0n1 is not mounted." +fi + +# 步骤10: 切换到sysSentry目录 +echo "步骤10: 切换到sysSentry目录..." +cd "$SYS_SENTRY_PATH" || { echo "切换目录失败"; exit 1; } + +# 步骤11: 安装nvme_inject +echo "步骤11: 安装nvme_inject..." +sh install.sh || { echo "安装sysSentry测试失败"; exit 1; } + +echo "nvme_inject安装执行完成。" + -- Gitee