WIN11安装Ubuntu22.04双系统,驱动cuda,配置3D GS
前言:看了很多基于3D GS开发的SLAM系统都默认在Ubuntu20.04-22.04中运行,并且WIN11不太方便安装cmake等基础编译库。所以还是在Ubuntu系统中进行咱的研究吧。
step 1. WIN11安装Ubuntu双系统
首先确认系统是否为UEFI模式。
win+X进行磁盘管理,分出一个空白卷,用来安装Ubuntu系统(600G)。
ubuntu官网下载Ubuntu22.04_x86_64.iso。
用rufus软件和一个8GB的空U盘制作启动盘。
将启动盘插入电脑,重启。注意一定要在BIOS(按F2 F10 ESC或F12,看电脑品牌)中关闭安全启动secure boot或安全启动管理,不然后续安装nvidia驱动会报错,同时调整开机顺序为启动盘第一。
然后exit bios界面,等待自动重启,自动进入Ubuntu安装界面(如果enter “try or install ubuntu”后黑屏,要重启,用按键e点击“try or install ubuntu”进入grub模式,在splash 后将---替换为nomodeset,然后按F10保存并启动。)
安装方式选择其他安装方式,自己给UBUNTU系统分配内存大小,不然后续安CUDA后挂载点/就满了,无法安装其他程序。我设置的分配方案是:efi -逻辑分区-空间起始位置-500MB;swap-主分区-空间起始位置-(内存小于8G就是内存2倍,否则就>=8G)8GB;/-ext4-主分区-空间起始位置-128GB;/home-主分区或逻辑分区-空间起始位置-ext4,剩余存储空间。然后选择efi所在分区安装ubuntu引导。等待安装成功。
P.S.目前尝试18.04和20.04,安装完都没有无线网卡驱动,连不上网,是什么原因?
注意,如果在后续安装驱动的过程中出现问题,建议直接重装系统【进入win系统,然后win+r cmd 输入 diskpart。然后在出现的命令行中输入:list disk,选中安装ubuntu系统的那个盘select disk xx(我的是0),然后list partition,选择ubuntu系统的那4个分区,依次为每个分区执行“select partition xx(我的四个分区是5/6/7/8),然后 delete partition xx(5/6/7/8) override"。最后要删除win系统efi中的ubuntu启动项,选中win系统efi引导在的区,一般是第一个,select partition 1,然后分配一个盘符方便打开 assign letter=j(字母A-Z,不要和已有盘符重复就行);然后以管理员权限打开记事本,点击文件,打开J盘,点击efi文件夹,删除其中的ubuntu文件夹;最后再回到diskpart删除分配的盘符 remove letter=j。可以win+x 磁盘管理,看是否恢复原来给ubuntu的空白分区。】
step 2. 安装驱动、CUDA、cudnn、anaconda
step 2.1 安装nvidia驱动
笔记本的双系统安装驱动比台式机要容易出现安装驱动后重启黑屏无法启动的问题,即使ctrl alt f1-f6进入非图形界面也不好恢复,我通常就重装系统尝试其他的安装版本和方法了。我主要参考了下面的连接(按权重排序)。
Ubuntu20.04 安装 Anaconda步骤_ubuntu20.04安装anaconda-CSDN博客
Ubuntu18-24.04安装和干净卸载nvidia显卡驱动——超详细、最简单_ubuntu安装nvidia显卡驱动-CSDN博客
Ubuntu22.04安装NVIDIA驱动+CUDA+CUDNN+Anaconda+PyTorch+Pycharm-CSDN博客
(1)首先要再次明确是否禁用bios中的安全启动,否则会禁止第三方源安装驱动;安装gcc等依赖库
sudo apt-get update
sudo apt-get install build-essential
sudo apt-get install gcc g++ make
//gcc --version 查看我的gcc版本是7.5,看其他教程,gcc版本太低也会导致错误。
(2)禁用ubuntu系统自带的nouveau驱动,否则会和nvidia驱动矛盾。
sudo gedit /etc/modprobe.d/blacklist.conf
在文件末尾插入:
blacklist nouveau
options nouveau modeset=0
然后执行命令:
sudo update-initramfs -u
重启电脑:
sudo reboot
然后检查是否禁用了nouveau:
lsmod | grep nouveau
如果没有任何输出,就成功了。
(3)可选操作:安装lightdm,主要是用来关闭启动图形界面(也可以不关闭)。
sudo apt-get install lightdm
在弹出上下键选择界面gdm3 vs. lightdm中 选择lightdm
(4)nvidia驱动有三种安装方式:
第一种是打开 软件和更新,点击“ubuntu软件”--“下载自”--“其他站点”选择apt install的下载源,一般是tuna.tsinghua或ali源,可以加速。
然后点击“附加驱动”,会显示这台电脑适合的驱动,我的显示有:525,525-server,535.545这四个。点击选择的版本,应用更改,让系统自动下载安装。这种方法被很多网友认为是最适合不会出错的方法,但我之前也试过没成功,可能也和当时的电脑集显版本AMD有关系。
第二种是ppa仓库自动安装
sudo add-apt-repository ppa:graphics-drivers/ppa //添加ppa库到系统中
sudo apt update // 更新
sudo ubuntu-drivers devices // 显示可以安装的nvidia驱动
//我能用的驱动有525-server,525,535,545-recommended。这个推荐结果和ubuntu 软件和更新 推荐的是一样的。我成功安装了545。
//然后选择版本安装:sudo apt install nvidia-xxx //这个过程会比较慢,换源方法一:软件与更新->国内其他地区->最佳镜像->应用。方法二:手动 清华、阿里、化为、国科都试试Linux换源大全!一步一步教你如何让系统飞起来!
reboot //重启
nvidia-smi //查看安装成功
P.S.网上有推荐用server或recommended,认为更稳定。但这两种哪个更好?取决于ubuntu系统是有图形界面还是只作为服务器,recommended适合前者,图像分辨率和更新维护更好;server适合后者。可见,我应该安装545版本。
第三种是官网下载run文件手动安装,也有网友认为这是对新显卡版本最稳妥的方法。
首先查看电脑的显卡版本:
lspci | grep -i nvidia
我的显示有:NVIDIA Corporation Device 2860 (rev a1)
然后在网站PCI Devices中检索2860,出现显卡版本为“Name: AD106M [GeForce RTX 4070 Max-Q / Mobile]”
然后到NVIDIA驱动下载官网 下载 NVIDIA 官方驱动 | NVIDIA检索显卡版本
geforce RTX-4070(notebook/laptop gpu)-linux-64bit
提供的驱动版本有 570 550 535。没有我根据软件更新或ppa推荐的5454版本。但是起码有535对上了,所以我最终下载了535.230.02版本run文件。这个版本最终没有成功,比cuda11.8需要的CUDA版本低,安了CUDA后nvidia-smi报错版本不匹配;安装3D GS torch的cuda不可用,且pip install submodules/subgaussian报错找不到cuda链接库。只能说明535这个版本低导致的后续错误。
然后cd到run文件下载路径,授权并安装:
sudo chmod +x NVIDIA-Linux-x86_64-535.230.02.run
sudo bash NVIDIA-Linux-x86_64-535.230.02.run -no-x-check -no-nouveau-check -no-opengl-files
注意后面的三个安装选项,分别在安装时避免ubuntu x服务与nvidia的矛盾;不安装opengl文件,否则可能导致循环启动;禁用ubuntu的nouveau驱动。这三个最好都写上,我之前以为禁用nouveau后没有选no-nouveau,安装完重启就黑屏,当然应该有其他问题,但是变量太多了,导致这个过程都有点玄学。
在安装时 选 NVIDIA专有驱动;continue install; install nvidia's 32 bit libraries 选 no 或 提示说安装不了32bit选ok; 是否run the nvidia-xconfig utility to automatically update,选no (我看也有选yes的,我之前选yes,重启黑屏)。等安装成功"Installation of the NVIDIA ... is now complete"选ok就行了。
(安装building kernel modules时可能会报错 An error occured in "Building kernel modules", see /var/log/nvidia-installer.log。我按建议sudo gedit打开log文件后,找到报错处是gcc 11.4版本不支持ubuntu22.04要求的编译器版本gcc12.3。安装gcc-12的教程安装并配置gcc-12 g++-12_gcc12安装-CSDN博客)
最后重启电脑reboot
nvidia-smi
终于输出了驱动,和支持的最大CUDA版本12.2。
step 2.2 安装CUDA
CUDA Toolkit Archive | NVIDIA Developer
cuda版本要根据应用需求,我想运行3D GS,安装11.8版本。
选择 linux ubuntu x86-64 18.04,然后我从官网给出的三种安装方式选择local deb 或 local runfile方式,将官网提供的指令依次复制到命令行中。
(推荐用runfile,在安装时可能CUDA建议的NVIDIA版本更低,但是不安装:enter->取消推荐的nvidia驱动->install)
然后按建议添加至路径:
sudo gedit ~/.bashrc
在文件末尾添加
export PATH=/usr/local/cuda-11.8/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
改动生效:
source ~/.bashrc
将路径/usr/local/cuda-11.8/lib64通过sudo gedit添加至/etc/ld.so.conf文件,sudo ldconfig生效。
测试CUDA用例看是否安装成功:
cd /usr/local/cuda-11.8/extras/demo_suite
sudo ./bandwidthTest 不报错(result=pass),那么cuda版本应该安装成功。
验证/看nvidia和CUDA能不能共存:
nvcc -V
nvidia-smi
step 2.3 安装深度学习torch tensorflow依赖的cudnn框架
cuDNN Archive | NVIDIA Developer
下载适合CUDA的版本,我下的是v8.9.7-ubuntu18.04-x86_64.deb
然后:
sudo cp /var/cudnn-local-repo-ubuntu1804-8.9.7.29/cudnn-local-AE31B5F1-keyring.gpg /usr/share/keyrings/ #这一句是直接安装下一句的系统提示
sudo dpkg -i cudnn-local-repo-xxx.deb
step 2.4 安装anaconda
参考:
Ubuntu20.04 安装 Anaconda步骤_ubuntu20.04安装anaconda-CSDN博客
一般选anaconda3版本的就行。
wget https://repo.anaconda.com/archive/Anaconda3-2023.03-1-Linux-x86_64.sh
bash Anaconda3-2023.03-1-Linux-x86_64.sh
(enter->ctrl c->yes->enter->no不自动启动)
添加至路径:
sudo gedit ~/.bashrc
在文件末尾添加export PATH="/xx our path xx/anaconda3/bin:$PATH"
改动生效:
source ~/.bashrc
验证:
conda -V
如果输出anaconda版本则安装成功。
step 3. 配置3D GS
conda create -n gs python=3.8
source activate gs
pip install torch==2.0.0 torchvision==0.15.1 torchaudio==2.0.1 --index-url https://download.pytorch.org/whl/cu118 //注意安装gpu版本的torch,cu118和cuda 11.8对应。
//建议这个时候检查一下torch是否安装正确#一般不出错,就表示驱动环境正确,就应该submodules不会编译出错,就应该没问题了:
python
>>import torch
>> torch.__version__ #2.0.0+cu118
>>torch.cuda.is_available() #true
>>exit()
然后安装其他依赖:
sudo apt install -y libglew-dev libassimp-dev libboost-all-dev libgtk-3-dev libopencv-dev libglfw3-dev libavdevice-dev libavcodec-dev libeigen3-dev libxxf86vm-dev
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-contrib-python plyfile tqdm joblib matplotlib
下载3D GS的github源码,一定要下全--recursive:
git clone https://github.com/graphdeco-inria/gaussian-splatting --recursive
编译三个子模块:
pip install submodules/diff-gaussian-rasterization //一般到这一步,不报错就成功了。
pip install submodules/simple-knn
pip install submodules/fused-ssim
//如果报错和cuda无关,就说明驱动版本起码是正确的。否则要重装其他版本的驱动,一般是驱动版太低,要装新的。
//报错python setup.py bdist_wheel did not run successfully,是编译环境有问题,和ubuntu&python版本有关系。更新pip的版本并安装wheel和setuptools等编译依赖项pip install wheel setuptools pip --upgrade,但还是不行。细看编译步骤中出现报错#error -- unsupported GNU version! gcc versions later than 11 are not suppor说明编译驱动时把ubuntu22.04自带的gcc11.4更新成了更高版本12.3,这个时候反而和3dgs的submodules要求的gcc版本不匹配,还是要换回11.4,关于多个gcc版本管理与切换参考ubuntu系统管理和切换多版本的gcc和g++_ubuntu更改gcc g++版本-CSDN博客。再pip install submodules应该就没问题了。
训练(我自己采集的数据mySandTable,包含用colmap生成的sparse/0)
python train.py -s ../datasets/mySandTable
出现training progress的进度条就OK了。但是如果CUDA out of memory,就说明GPU显存太小了,3DGS要求24GB,可以调节训练参数(比如迭代次数、densify的训练迭代区间和阈值等,但是没有效果,可能也和我的显存是8GB有关。后面换成24GB就能训练了,感觉还比较快,我的数据集上10min训练完,甚至比一块T4服务器41分钟还要快!)
相关文章:
WIN11安装Ubuntu22.04双系统,驱动cuda,配置3D GS
前言:看了很多基于3D GS开发的SLAM系统都默认在Ubuntu20.04-22.04中运行,并且WIN11不太方便安装cmake等基础编译库。所以还是在Ubuntu系统中进行咱的研究吧。 step 1. WIN11安装Ubuntu双系统 首先确认系统是否为UEFI模式。 winX进行磁盘管理ÿ…...

【OSG学习笔记】Day 9: 状态集(StateSet)与渲染优化 —— 管理混合、深度测试、雾效等渲染状态
干货开始。_ 一、StateSet核心概念与作用 StateSet 是OSG(OpenSceneGraph)中管理渲染状态的核心类,用于封装 OpenGL 渲染状态(如混合、深度测试、雾效、材质、纹理、着色器等),并将这些状态应用于节点或几何体。 通过合理组织 StateSet,可实现: 渲染状态的高效复用:…...
如何解析商品详情页面
解析商品详情页面是爬虫开发中的一个重要环节。由于商品详情页面通常包含丰富的信息,如商品名称、价格、描述、图片等,因此需要仔细分析页面结构并提取所需数据。以下是一个详细的步骤指南,展示如何使用 Java 和 Jsoup 解析商品详情页面。 一…...

Operating System 实验七 Linux文件系统实验
实验目标: 使用dd命令创建磁盘镜像文件ext2.img并格式化为ext2文件系统,然后通过mount命令挂载到Linux主机文件系统。查看ext2文件系统的超级块的信息,以及数据块的数量、数据块的大小、inode个数、空闲数据块的数量等信息 在文件系统中创建文件xxxxx.txt(其中xxxxx为你的学…...
使用 IntersectionObserver 实现懒加载提升网页性能的高效方案
在当今快节奏的网络环境中,用户对于网页加载速度的要求越来越高。对于前端开发者而言,优化网页性能、减少初始加载时间成为了一项至关重要的任务。懒加载(Lazy Loading)作为一种有效的性能优化策略,能够延迟非关键资源…...
Python-Django系列—部件
部件是 Django 对 HTML 输入元素的表示。部件处理 HTML 的渲染,以及从对应于部件的 GET/POST 字典中提取数据。 内置部件生成的 HTML 使用 HTML5 语法,目标是 <!DOCTYPE html>。例如,它使用布尔属性,如 checked…...

linux中shell脚本的编程使用
linux中shell脚本的编程使用 1.shell的初步理解1.1 怎么理解shell1.2 shell命令 2.shell编程2.1 什么是shell编程2.2 C语言编程 和 shell编程的区别 3.编写和运行第一个shell脚本程序3.1 编写时需要注意以下几点:3.1.1 shell脚本没有main函数,没有头文件…...

图像畸变-径向切向畸变实时图像RTSP推流
实验环境 注意:ffmpeg进程stdin写入两张图片的时间间隔不能太长,否则mediamtx会出现对应的推流session超时退出。 实验效果 全部代码 my_util.py #进度条 import os import sys import time import shutil import logging import time from datetime i…...

手搓雷达图(MATLAB)
看下别人做出来什么效果 话不多说,咱们直接开始 %% 可修改 labels {用户等级, 发帖数, 发帖频率, 点度中心度, 中介中心度, 帖子类型计分, 被列为提案数}; cluster_centers [0.8, 4.5, 3.2, 4.0, 3.8, 4.5, 4.2; % 核心用户0.2, 0.5, 0.3, 0.2, 0.1, 0.0, 0.0;…...

汽车零配件供应商如何通过EDI与主机厂生产采购流程结合
当前,全球汽车产业正经历深刻的数字化转型,供应链协同模式迎来全新变革。作为产业链核心环节,汽车零部件供应商与主机厂的高效对接已成为企业发展的战略要务。然而,面对主机厂日益严格的数字化采购要求,许多供应商在ED…...

闻性与空性:从耳根圆通到究竟解脱的禅修路径
一、闻性之不动:超越动静的觉性本质 在《楞严经》中,佛陀以钟声为喻揭示闻性的奥秘:钟声起时,闻性显现;钟声歇时,闻性不灭。此“不动”并非如磐石般凝固,而是指觉性本身超越生灭、来去的绝对性…...

第34课 常用快捷操作——按“空格键”旋转图元
概述 旋转某个图元,是设计过程中常需要用到的操作,无论是在原理图中旋转某个图形,还是在PCB图中旋转某个元素。 旋转操作的快捷键是空格键。下面作详细介绍。 按空格键旋转图元 当我们选中一个图元时,按下空格键,即…...

基于亚马逊云科技构建音频转文本无服务器应用程序
Amazon Transcribe是一项基于机器学习模型自动将语音转换为文本的服务。它提供了多种可以提高文本转录准确性的功能,例如语言自定义、内容过滤、多通道音频分析和说话人语音分割。Amazon Transcribe 可用作独立的转录服务,也可以集成到应用程序中提供语音…...
如何打包python程序为可执行文件
将 Python 程序打包为可执行文件是一个常见需求,尤其是在希望将应用程序分享给不具备 Python 环境的用户时。以下是使用 PyInstaller 工具将 Python 程序打包为可执行文件的步骤。 步骤 1:安装 PyInstaller 如果您还没有安装 PyInstaller,请…...

计算机二级MS Office第八套演示文稿
教程:...

K8S Service 原理、案例
一、理论介绍 1.1、3W 法则 1、是什么? Service 是一种为一组功能相同的 pod 提供单一不变的接入点的资源。当 Service 存在时,它的IP地址和端口不会改变。客户端通过IP地址和端口号与 Service 建立连接,这些连接会被路由到提供该 Service 的…...

实验四 进程调度实验
一、实验目的 1、了解操作系统CPU管理的主要内容。 2、加深理解操作系统管理控制进程的数据结构--PCB。 3、掌握几种常见的CPU调度算法(FCFS、SJF、HRRF、RR)的基本思想和实现过程。 4、用C语言模拟实现CPU调度算法。 5、掌握CPU调度算法性能评价指…...

ABAP Object Services
ABAP Object Services...

linux blueZ 第四篇:BLE GATT 编程与自动化——Python 与 C/C++ 实战
本篇聚焦 BLE(Bluetooth Low Energy)GATT 协议层的编程与自动化实践,涵盖 GATT 基础、DBus API 原理、Python(dbus-next/bleak)示例、C/C++ (BlueZ GATT API)示例,以及自动发现、读写特征、订阅通知、安全配对与脚本化测试。 目录 BLE GATT 基础概念 BlueZ DBus GATT 模…...

Linux线程与进程:探秘共享地址空间的并发实现与内
Linux系列 文章目录 Linux系列前言一、线程的概念二、线程与地址空间2.1 线程资源的分配2.2 虚拟地址到物理地址的转换 三 、线程VS进程总结 前言 在Linux操作系统中,线程作为CPU调度的基本单位,起着至关重要的作用。深入理解线程控制机制,是…...
ValueError: matmul: Input operand 1 has a mismatch in its core dimension 0
在遇到这个代码时,大多数情况下就是两个运算的向量维度不匹配,此时,可以打印一下两个数组的维度, # print(“[DEBUG] a shape:”, a.shape) # print(“[DEBUG]b:”, b.shape) 假设a.shape结果为[,200],b.shape结果为[210,255],那么…...
MySQL 8.4企业版 安装和配置审计插件
在最新的MySQL 8.4.4企业版上启用审计日志功能 操作系统:Ubuntu 24.04 数据库:8.4.4-commercial for Linux on x86_64 (MySQL Enterprise Server - Commercial) 1.查看安装脚本 下面2个脚本位于mysql安装目录 share 下,一个是window一个是linux可以用…...

科学养生,开启健康生活新方式
在快节奏的现代生活中,健康养生已成为人们关注的焦点。科学的养生方式不仅能增强体质,还能有效预防疾病,提升生活质量。 合理饮食是健康养生的基础。日常饮食应遵循均衡原则,保证蛋白质、碳水化合物、脂肪、维生素和矿物质的合…...

外贸图片翻译软件推荐用哪些?不损原图画质的跨境图片翻译器,收藏!
在跨境电商的 “江湖” 里,卖家们怀揣着全球 “捞金” 的梦想扬帆起航,可谁能想到,一个看似不起眼的 “小怪兽”—— 图片翻译难题,却常常让大家在 “出海” 途中 “栽跟头”。 电商跨境图片翻译全能王——风车AI翻译 [fengchef…...

3.1/Q1,Charls最新文章解读
文章题目:The impact of chronic diseases and lifestyle on sarcopenia risk in older adults: a population-based longitudinal study DOI:10.3389/fmed.2025.1500915 中文标题:慢性病和生活方式对老年人肌肉减少症风险的影响:…...

简单几步,开启 Intel VT-x 让电脑“解开CPU封印”
#vmware #虚拟机 #cpu虚拟化 # Intel VT-x 前言 你是不是也遇到过这种情况:在尝试运行虚拟机(VM)、安卓模拟器,或者使用 Windows 沙盒、WSL2 等功能时,遇到了类似“此主机支持 Intel VT-x,但 Intel VT-x …...

flutter 插件收集
2025年 1月10号Flutter插件手机 声音转文字 speech_to_text | Flutter package 文字转声音 flutter_tts | Flutter package 堆栈信息 stack_trace | Dart package 跳转到app设置里面 app_settings | Flutter package 轻松的动画 animations | Flutter package 日志打印 t…...
Golang编程拒绝类型不安全
简介 在 Go 中,标准库提供了多种容器类型,如 list、ring、heap、sync.Pool 和 sync.Map。然而,这些容器默认是类型不安全的,即它们可以接受任何类型的值,这可能导致运行时错误。为了提升代码的类型安全性和可维护性&am…...

pyenv-virtualenv(python 版本管理工具)
推荐参考(本人实测有用) 参考文章pyenv 和 pyenv-virtualenv 的安装、配置和使用(仅供参考) 参考文章 pyenvpyenv-virtualenv(仅供参考) pyenv (windows)安装 手动安装 git clone https://github.com/pye…...

DocsGPT remote接口RCE(CVE-2025-0868)
免责声明 本文档所述漏洞详情及复现方法仅限用于合法授权的安全研究和学术教育用途。任何个人或组织不得利用本文内容从事未经许可的渗透测试、网络攻击或其他违法行为。使用者应确保其行为符合相关法律法规,并取得目标系统的明确授权。 对于因不当使用本文信息而造成的任何直…...