当前位置: 首页 > article >正文

Ubuntu22.04修改root用户并安装cuda

由于本人工作原因,经常会遇到需要给ubuntu打显卡驱动的问题,虽然说不难吧,但是耐不住机器多,重复多次也就烦了,于是抽出了一点时间,并且在deepseek的帮助之下,写了一个自动安装驱动的脚本,脚本中除了自动关闭nouveau的这一步没有进行确认,其他情况下(即nouveau默认禁用的情况下)可正常运行。

#上传install_cuda.shchmod +x install_cuda.sh
sudo ./install_cuda.sh#查看是否安装完成
nvidia-smi
nvcc -V

 附上脚本,可以进行微调

#!/bin/bash
# -----------------------------------------------------------------------------
# 脚本名称: install_cuda.sh
# 版本: 2.0.0
# 作者: 一个不知名的苦逼打工人
# 目标:在 Ubuntu 22.04 上安装 NVIDIA CUDA 12.8,并修改 root 密码
# -----------------------------------------------------------------------------
echo "🔧 五秒后开始执行脚本"
sleep 5# 记录脚本开始时间
start_time=$(date +%s)# 确保以 root 权限运行
if [[ $EUID -ne 0 ]]; thenecho "❌ 错误:此脚本必须以 root 权限执行。" >&2sleep 1echo "用法:sudo bash $0"sleep 1exit 1
fi# **修改 root 密码**
ROOT_PASSWORD="1!P@ssw0rd"
echo "🔑 正在修改 root 密码..."
sleep 1
echo "root:$ROOT_PASSWORD" | sudo chpasswd
echo "✅ root 密码已修改为 '1!P@ssw0rd'!"
sleep 1# **允许 root 通过 SSH 登录**
echo "🔧 允许 root 通过 SSH 登录..."
sleep 1
sudo sed -i 's/^#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
sudo sed -i 's/^PermitRootLogin no/PermitRootLogin yes/' /etc/ssh/sshd_config# **重启 SSH 服务(使修改生效)**
sudo systemctl restart sshd
echo "✅ SSH 允许 root 登录已启用!"
sleep 1# **切换到 root 账户**
# echo "🔄 切换到 root 账户..."
# exec su - root  
# -----------------------------------------------------------------------------
# **以下开始执行 CUDA 12.8 安装**
# -----------------------------------------------------------------------------echo "🔧 定义 CUDA 相关变量..."
sleep 1
CUDA_VERSION="12.8.0"
CUDA_DRIVER_VERSION="570.86.10"
CUDA_MAJOR_VERSION=$(echo "$CUDA_VERSION" | cut -d. -f1-2)
CUDA_URL="https://developer.download.nvidia.com/compute/cuda/${CUDA_VERSION}/local_installers/cuda_${CUDA_VERSION}_${CUDA_DRIVER_VERSION}_linux.run"
CUDA_PKG="/root/cuda_${CUDA_VERSION}_${CUDA_DRIVER_VERSION}_linux.run"echo "✅ CUDA 版本: $CUDA_VERSION"
sleep 1
echo "✅ CUDA 驱动版本: $CUDA_DRIVER_VERSION"
sleep 1
echo "✅ CUDA 主版本: $CUDA_MAJOR_VERSION"
sleep 1
echo "✅ CUDA 下载链接: $CUDA_URL"
sleep 1
echo "✅ CUDA 安装包路径: $CUDA_PKG"
sleep 1echo "🔧 将 CUDA 相关变量写入 /etc/profile..."
sleep 1# 检查并添加 CUDA_VERSION
if ! grep -q "export CUDA_VERSION=" /etc/profile; thenecho "export CUDA_VERSION=\"$CUDA_VERSION\"" >> /etc/profileecho "✅ 已写入 CUDA_VERSION"sleep 1
elseecho "⚠️ CUDA_VERSION 已存在,跳过写入"sleep 1
fi# 检查并添加 CUDA_DRIVER_VERSION
if ! grep -q "export CUDA_DRIVER_VERSION=" /etc/profile; thenecho "export CUDA_DRIVER_VERSION=\"$CUDA_DRIVER_VERSION\"" >> /etc/profileecho "✅ 已写入 CUDA_DRIVER_VERSION"sleep 1
elseecho "⚠️ CUDA_DRIVER_VERSION 已存在,跳过写入"sleep 1
fi# 检查并添加 CUDA_MAJOR_VERSION
if ! grep -q "export CUDA_MAJOR_VERSION=" /etc/profile; thenecho "export CUDA_MAJOR_VERSION=\"$CUDA_MAJOR_VERSION\"" >> /etc/profileecho "✅ 已写入 CUDA_MAJOR_VERSION"sleep 1
elseecho "⚠️ CUDA_MAJOR_VERSION 已存在,跳过写入"sleep 1
fi# 检查并添加 CUDA_URL
if ! grep -q "export CUDA_URL=" /etc/profile; thenecho "export CUDA_URL=\"$CUDA_URL\"" >> /etc/profileecho "✅ 已写入 CUDA_URL"sleep 1
elseecho "⚠️ CUDA_URL 已存在,跳过写入"sleep 1
fi# 检查并添加 CUDA_PKG
if ! grep -q "export CUDA_PKG=" /etc/profile; thenecho "export CUDA_PKG=\"$CUDA_PKG\"" >> /etc/profileecho "✅ 已写入 CUDA_PKG"sleep 1
elseecho "⚠️ CUDA_PKG 已存在,跳过写入"sleep 1
fiecho "🔧 使环境变量配置立即生效..."
sleep 1
source /etc/profile
echo "✅ 环境变量配置已生效"
sleep 1echo "🎉 CUDA 相关变量已成功写入环境变量并生效!"
sleep 1# 备份 sources.list
echo "📂 备份原始的 sources.list..."
sleep 1
cp /etc/apt/sources.list /etc/apt/sources.list.bak && echo "✅ 备份成功: /etc/apt/sources.list.bak" || { echo "❌ 备份失败"; sleep 1; exit 1; }# 配置阿里源
echo "⚙️ 配置阿里源..."
sleep 1
cat > /etc/apt/sources.list << EOF
deb https://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiversedeb https://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiversedeb https://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse# deb https://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
# deb-src https://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiversedeb https://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
EOF# 更新系统并安装必要工具
echo "🔄 更新软件包..."
sleep 1
export DEBIAN_FRONTEND=noninteractive
apt update && apt upgrade -y# 安装基础工具(确保 `nvcc -V` 可用)
echo "📦 安装必要工具 (gcc, make, vim,, nvidia-cuda-toolkit)..."
sleep 1
apt install -y gcc make vim  nvidia-cuda-toolkit || { echo "❌ 工具安装失败"; sleep 1; exit 1; }# 下载 CUDA 12.8 安装包
echo "⬇️ 正在下载 CUDA $CUDA_MAJOR_VERSION 安装包..."
sleep 1
wget -O "$CUDA_PKG" --progress=dot:giga "$CUDA_URL" || { echo "❌ CUDA 下载失败"; sleep 1; exit 1; }
echo "✅ CUDA 下载完成: $CUDA_PKG"
sleep 1# 禁用 Nouveau 驱动
echo "🚫 禁用 Nouveau 驱动..."
sleep 1
cat > /etc/modprobe.d/blacklist-nouveau.conf << EOF
blacklist nouveau
options nouveau modeset=0
EOF# 重新生成 initramfs 并尝试卸载 nouveau
update-initramfs -u
sleep 3
if lsmod | grep -q nouveau; thenecho "⚠️ Nouveau 仍在运行,尝试移除..."sleep 1rmmod nouveau || echo "⚠️ 无法卸载 Nouveau,可能需要手动检查"sleep 1
elseecho "✅ Nouveau 禁用成功。"sleep 1
fi# 赋予 CUDA 安装包执行权限
chmod +x "$CUDA_PKG"# 安装 CUDA
echo "📦 开始安装 NVIDIA CUDA $CUDA_MAJOR_VERSION..."
sleep 1
if bash "$CUDA_PKG" --silent --driver --toolkit --no-drm  ; thenecho "✅ CUDA 安装完成。"sleep 1
elseecho "❌ CUDA 安装失败,退出脚本。" >&2sleep 1exit 1
fi# 更新环境变量
echo "🔧 配置环境变量..."
sleep 1
if ! grep -q "/usr/local/cuda-$CUDA_MAJOR_VERSION/bin" /etc/profile; thenecho "export PATH=/usr/local/cuda-$CUDA_MAJOR_VERSION/bin:\$PATH" >> /etc/profile
fi
if ! grep -q "/usr/local/cuda-$CUDA_MAJOR_VERSION/lib64" /etc/profile; thenecho "export LD_LIBRARY_PATH=/usr/local/cuda-$CUDA_MAJOR_VERSION/lib64:\$LD_LIBRARY_PATH" >> /etc/profile
fi# 使配置立即生效
source /etc/profile
source ~/.bashrc# 配置 NVIDIA 持久模式 systemd 服务
echo "🛠️ 创建 NVIDIA 持久模式 systemd 服务(Deshine-NVIDIA-Persistence-M-On)..."
sleep 1
cat > /etc/systemd/system/Deshine-NVIDIA-Persistence-M-On.service << EOF
[Unit]
Description=Enable NVIDIA Persistence Mode (Deshine)
After=multi-user.target[Service]
ExecStart=/usr/bin/nvidia-smi -pm 1
RemainAfterExit=yes
Type=oneshot[Install]
WantedBy=multi-user.target
EOF# 重新加载 systemd 并启用服务
systemctl daemon-reload
systemctl enable Deshine-NVIDIA-Persistence-M-On.service
systemctl start Deshine-NVIDIA-Persistence-M-On.service# 删除 CUDA 安装包
echo "🗑️ 清理无用的安装文件..."
sleep 1
rm -f "$CUDA_PKG"# 验证 CUDA 是否安装成功
echo "🔍 检查 CUDA $CUDA_MAJOR_VERSION 安装状态..."
sleep 1
if command -v nvcc &> /dev/null; thenecho "🎉 CUDA 安装成功!版本信息:"sleep 1nvcc -V
elseecho "⚠️ CUDA 可能未正确安装,请手动检查!"sleep 1
fi# 记录脚本结束时间并计算执行时间
end_time=$(date +%s)
execution_time=$((end_time - start_time))
echo "🕒 脚本执行完成,总耗时: ${execution_time} 秒"
sleep 1# **自动删除自身**
echo "🗑️ 自动删除安装脚本..."
sleep 1
rm -- "$0"# 询问是否重启系统
read -p "CUDA $CUDA_MAJOR_VERSION 配置完成,是否立即重启系统? (y/n) " confirm
if [[ "$confirm" =~ ^[Yy]$ ]]; thenecho "🔄 系统将在 10 秒后重启..."sleep 10echo "🔄 即将重启系统..."sudo reboot
elseecho "✅ 请手动重启系统以完成 CUDA 配置。"sleep 1
fi

相关文章:

Ubuntu22.04修改root用户并安装cuda

由于本人工作原因&#xff0c;经常会遇到需要给ubuntu打显卡驱动的问题&#xff0c;虽然说不难吧&#xff0c;但是耐不住机器多&#xff0c;重复多次也就烦了&#xff0c;于是抽出了一点时间&#xff0c;并且在deepseek的帮助之下&#xff0c;写了一个自动安装驱动的脚本&#…...

fiddler+雷电模拟器(安卓9)+https配置

一、fiddler配置 1、开启https代理 2、根证书安装&#xff1a;导出证书系统安装 二、模拟器设置 1、设置网络桥接模式 【点击安装】提示安装成功后保存即可 2、开启root&#xff08;开启adb远程调试&#xff09; 3、开启磁盘写入 4、设置WLAN代理 5、证书安装&#xff1a;物…...

STM32-SPI通信协议

目录 一&#xff1a;什么是通信协议&#xff1f; 二&#xff1a;电路结构 1.硬件电路 2&#xff1a;移位 3&#xff1a;时序图 4.交换字节 三&#xff1a;W25Q64简介 硬件电路&#xff1a;​编辑 存储器地址划分 Dlash操作注意事项 状态寄存器 SPI指令集 四&am…...

【CentOS】搭建Radius服务器

目录 背景简介&#xff1a;Radius是什么&#xff1f;Radius服务器验证原理搭建Radius服务器环境信息yum在线安装配置FreeRADIUS相关文件clients.conf文件users文件重启服务 验证 参考链接 背景 在项目中需要用到Radius服务器作为数据库代理用户的外部验证服务器&#xff0c;做…...

Vue中自定义指令:ClickOutside(点击当前模块外的位置)

应用场景 假设我们有一个下拉框组件&#xff0c;当下拉框展开的时候&#xff0c;点击下拉框之外的元素可以自动关闭下拉框。 一 ClickOutside代码示例 在vue3中使用ClickOutside // 导入自定义指令 import { ClickOutside as vClickOutside } from element-plus;// 绑定指令…...

如何在rust中解析 windows 的 lnk文件(快捷方式)

一、从标题二开始看&#x1f601; 这些天在使用rust写一个pc端应用程序&#xff0c;需要解析lnk文件获取lnk的图标以及原程序地址&#xff0c;之前并没有过pc端应用程序开发的经验&#xff0c; 所以在广大的互联网上游荡了两天。额&#x1f97a; 今天找到了这个库 lnk_parse很…...

2019年蓝桥杯第十届CC++大学B组真题及代码

目录 1A&#xff1a;组队&#xff08;填空5分_手算&#xff09; 2B&#xff1a;年号字符&#xff08;填空5分_进制&#xff09; 3C&#xff1a;数列求值&#xff08;填空10分_枚举&#xff09; 4D&#xff1a;数的分解&#xff08;填空10分&#xff09; 5E&#xff1a;迷宫…...

奇安信 2025 年护网蓝队初选笔试题(附答案解析)

&#x1f525; 爆款 CSDN 题库 | 超全护网蓝队笔试真题 | 含详细答案解析 &#x1f525; 熬夜为大家整理了 奇安信 2025 年护网蓝队初选笔试题&#xff0c;&#xff08;关注我我会持续更新&#xff09;涵盖 SQL 注入、Web 安全、渗透测试、二进制安全 等核心知识点&#xff0c;…...

jdk-21_linux-x64_bin.tar.gz Linux jdk21压缩包安装保姆级(详细安装教程)

jdk-21_linux-x64_bin.tar.gz 解压版详细安装教程 一、简洁版&#xff08;需要对 Linux 操作有一定基础&#xff09;二、图文详细教程1、前置准备2、解压安装3、配置环境变量4、验证成功 官网下载地址&#xff1a; https://www.oracle.com/java/technologies/downloads/#java2…...

第6章 定时器计数器

目录 6.1 定时计数器的结构框图 6.2 定时器的控制字 6.2.1 TMOD&#xff1a;工作方式控制寄存器 6.2.2 定时/计数器控制寄存器TCON 6.3 定时/计数器的4种工作方式 6.3.1 方式0、方式1&#xff08;13位、16位定时计数方式&#xff09; 6.3.2 方式2(常数自动重装入) 6.3.3 方…...

回归预测 | Matlab实现GWO-BP-Adaboost基于灰狼算法优化BP神经网络结合Adaboost思想的回归预测

回归预测 | Matlab实现GWO-BP-Adaboost基于灰狼算法优化BP神经网络结合Adaboost思想的回归预测 目录 回归预测 | Matlab实现GWO-BP-Adaboost基于灰狼算法优化BP神经网络结合Adaboost思想的回归预测回归效果基本介绍GWO-BP-Adaboost:基于灰狼算法优化BP神经网络结合Adaboost思想…...

蓝桥杯真题0团建dfs+哈希表/邻接表

dfs邻接表储存或者哈希表的运用&#xff0c;考察我们对数据的存储 本题核心就是在求从根节点开始的两棵树相同的最长序列&#xff0c;首先确定用dfs进行深搜&#xff0c;对于节点的形式可以用邻接表&#xff0c;邻接矩阵&#xff0c;哈希表来进行存储数据。下面看代码 邻接表 …...

系统架构的评估的系统的质量属性

体系结构苹果可以针对一个体系结构&#xff0c;也可以针对一组体系结构。 体系结构评估过程中&#xff0c;评估人员所关注的是系统的质量属性&#xff0c;所有评估方法所普遍关注的质量属性有以下几个&#xff1a;性能、可靠性&#xff08;容错&#xff0c;健壮性&#xff09;…...

论文阅读:基于超图高阶表示的WSI生存预测

Generating Hypergraph-Based High-Order Representations of Whole-Slide Histopathological Images for Survival Prediction 文章目录 论文介绍快速阅读摘要1 引言2 相关工作2.1 生存分析2.2 超图学习的准备工作 3 方法3.1 patch采样和低级特征提取3.2 多超图学习3.2.1 多超…...

NLP常见任务专题介绍(1)-关系抽取(Relation Extraction, RE)任务训练模板

📌 关系抽取(Relation Extraction, RE)任务训练示例 本示例展示如何训练一个关系抽取模型,以识别两个实体之间的关系。 1️⃣ 任务描述 目标:从文本中提取两个实体之间的语义关系,例如 “人物 - 组织”、“药物 - 疾病”、“公司 - 创始人” 等。输入:句子 + 标注的实…...

27. Harmonyos Next仿uv-ui 组件NumberBox 步进器组件禁用状态

温馨提示&#xff1a;本篇博客的详细代码已发布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下载运行哦&#xff01; 文章目录 1. 组件介绍2. 效果展示3. 禁用状态设置3.1 整体禁用3.2 输入框禁用3.3 长按禁用 4. 完整示例代码5. 知识点讲解5.1 禁用状态属性5.2 禁用…...

docker无法pull镜像问题解决for win10

docker无法pull镜像问题解决for win10 问题原因分析解决方法 问题 在win10系统上安装好doker-desktop后ping registry-1.docker.io不同&#xff0c;并且也无法登陆hub.docker.com, 使用docker pull xx也无法正常下载 原因分析 hub.docker.com在2024年5月之后&#xff0c;国内…...

批量将 Excel 转换 PDF/Word/CSV以及图片等其它格式

Excel 格式转换是我们工作过程当中非常常见的一个需求&#xff0c;我们通常需要将 Excel 转换为其他各种各样的格式。比如将 Excel 转换为 PDF、比如说将 Excel 转换为 Word、再比如说将 Excel文档转换为图片等等。 这些操作对我们来讲都不难&#xff0c;因为我们通过 Office 都…...

Node.js调用DeepSeek Api 实现本地智能聊天的简单应用

在人工智能快速发展的今天&#xff0c;如何快速构建一个智能对话应用成为了开发者们普遍关注的话题。本文将为大家介绍一个基于Node.js的命令行聊天应用&#xff0c;它通过调用硅基流动&#xff08;SiliconFlow&#xff09;的API接口&#xff0c;实现了与DeepSeek模型的智能对话…...

Mac同时安装jdk8和jdk17,默认选择jdk8

在Mac上同时安装JDK 8和JDK 17&#xff0c;并设置默认版本为JDK 8&#xff0c;可以按照以下步骤操作&#xff1a; 一、下载并安装JDK 8和JDK 17 下载JDK 8 访问Oracle JDK下载页面。在“Java SE Archive Downloads”部分&#xff0c;找到JDK 8的下载链接。选择适合您Mac芯片类…...

【Zinx】Day5-Part3:Zinx 的连接管理

目录 Day5-Part3&#xff1a;Zinx 的连接管理创建连接管理模块将连接管理模块集成到 Zinx 当中将 ConnManager 集成到 Server 当中在 Connection 的工厂函数中将连接添加到 ConnManagerServer 中连接数量的判断连接的删除 补充&#xff1a;连接的带缓冲发包方式补充&#xff1a…...

网络安全之RSA算法

1978年就出现了这种算法&#xff0c;它是第一个既能用于数据加密也能用于数字签名的算法。它易于理解和操作&#xff0c;也很流行。算法的名字以发明者的名字&#xff08;RonRivest&#xff0c;AdiShamir和LeonardAdleman&#xff09;命名。但RSA的安全性一直未能得到理论上的证…...

Unity Dots

文章目录 什么是DotsDOTS的优势ECS&#xff08;实体组件系统&#xff09;Job System作业系统Burst编译器最后 什么是Dots DOTS&#xff08;Data-Oriented Technology Stack&#xff09;是Unity推出的一种用于开发高性能游戏和应用的数据导向技术栈&#xff0c;包含三大核心组件…...

设计模式-结构型模式-桥接模式

概述 桥接模式 &#xff1a;Bridge Pattern&#xff1a; 是一种结构型设计模式。 旨在将抽象部分与实现部分分离&#xff0c;使它们可以独立变化。 它通过组合代替继承&#xff0c;解决类爆炸问题&#xff0c;并提高系统的灵活性和可扩展性。 组成部分 【抽象部分】&#xff08…...

Ultravox:融合whisper+llama实现audio2text交互

Ultravox是由Fixie AI开发的一种创新型多模态大语言模型,专为实时语音交互设计。与传统的语音交互系统不同,Ultravox无需单独的语音识别(ASR)阶段,可以直接理解文本和人类语音,实现更快速、更自然的交互体验。Ultravox v0.5在语音理解基准测试中超越了OpenAI的GPT-4o Realt…...

【MySQL_06】表的相关操作

文章目录 一、表的基本操作1.1 创建表1.2 修改表结构1.2.1 添加列1.2.2 删除列1.2.3 修改列1.2.4 重命名列1.2.5 添加约束 1.3 删除表1.4 查询表结构1.5 重命名表1.6 复制表1.6.1 仅复制结构1.6.2 复制结构及数据 1.7 清空表数据 二、数据完整性约束2.1 主键约束2.2 唯一约束2.…...

clickhouse集群部署保姆级教程

ClickHouse安装 版本要求 23.8及之后的版本 硬件要求 三台机器 建议配置 磁盘 ssd 500G内存 32gcpu 16c 最低配置 磁盘 机械硬盘 50G内存 4gcpu 4c 容量规划 一亿条数据大约使用1TB磁盘容量 参考官方容量推荐 安装包准备 zookeeper安装 zookeeper需要java启动&…...

驾培市场与低空经济无人机融合技术详解

随着科技的飞速发展和社会的不断进步&#xff0c;驾培市场正面临着前所未有的变革。传统汽车驾驶培训已不再是唯一的选择&#xff0c;无人机驾驶等新兴领域正逐渐成为驾培市场的重要组成部分。本报告旨在探讨驾培市场与低空经济的融合发展&#xff0c;特别是应用型人才培养与驾…...

pandas-基础(数据结构及文件访问)

1 Pandas的数据结构 1.1 Series 特点&#xff1a;一维的数据型对象&#xff0c;包含一个值序列和数据标签(即索引&#xff09; 创建Series&#xff1a; pandas.Series(dataNone, indexNone, dtypeNone, nameNone, copyFalse, fastpathFalse) 参数说明&#xff1a; data&a…...

简单记录一下Oracle数据库与mysql数据库注入的不同。

Oracle数据库的注入比mysql较复制。 一确定注入点&#xff1a;与mysql一样。 and 11 -- #文章有出现. and 12 -- #文章不见了。 二。确定列数。 ’order by 1&#xff0c;2 -- #没问题 order by 1,2,3 -- #保错&#xff0c;所以有两列。 三&#xff0c;所有uni…...