DeepSeek-OCR实战(01):基础运行环境搭建-Ubuntu
DeepSeek-OCR实战是一个系列文章,包含了从基础运行环境搭建到应用接入全过程。本章为:基础运行环境搭建,操作系统采用 Ubuntu Server 24

| 环境 | 版本 |
|---|---|
| ubuntu-24.04.3 Server | release 10.0 |
| Cuda | 11.8 |
| 显卡 RTX 2080 Ti 22G | 驱动 NVIDIA-Linux-x86_64-580.105.08 |
| conda | 25.9.1 |
| git | 2.47.3 |
1.操作系统基础安装
安装 Ubuntu 24 Server 版本后(全部默认安装),查看一下磁盘分区情况,我的磁盘是 500G:
1.1 查看分区情况
sudo fdisk -l
# 分区表
Device Start End Sectors Size Type
/dev/sda1 2048 2203647 2201600 1G EFI System
/dev/sda2 2203648 6397951 4194304 2G Linux filesystem
/dev/sda3 6397952 976771071 970373120 462.7G Linux filesystemDisk /dev/mapper/ubuntu--vg-ubuntu--lv: 100 GiB, 107374182400 bytes, 209715200 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
- sda1: EFI系统分区 1G,用于UEFI启动, 存放引导加载程序
- sda2:
/boot分区 2G,存放内核和 initramfs - sda3: 它被用来创建LVM卷组(Volume Group), 进而花饭逻辑卷(Logical Volume) ,
/dev/sda3被用作LVM的底层存储
逻辑卷的容量只有 100G,默认安装的时候,虽然硬盘有 462.7GB 分配给了 LVM,但目前只用了其中的 100GB 创建了一个逻辑卷作为系统根目录。剩余空间仍保留在卷组中,可以随时扩展逻辑卷或创建新卷。
磁盘分区大致这样:
物理磁盘 /dev/sda (500GB)
├── /dev/sda1 → EFI 系统分区 (1GB)
├── /dev/sda2 → /boot 分区 (2GB,可能)
└── /dev/sda3 → LVM 物理卷 (462.7GB)└── 卷组 ubuntu-vg└── 逻辑卷 ubuntu-lv (100GB) → 挂载为 /
1.2 扩展逻辑卷并同时扩展文件系统
# 确认文件系统
dufo df -T /
Filesystem Type 1K-blocks Used Available Use% Mounted on
/dev/mapper/ubuntu--vg-ubuntu--lv ext4 102626232 10978200 86388768 12% /
可以看到是 ext4 文件系统,使用西面命令完成扩容: 自动扩容LV 并 resize2fs
sudo lvextend --resizefs -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv
-l +100%FREE:使用卷组中 所有剩余空间
–resizefs:自动调整文件系统大小(对 ext4 有效)
# 验证
sudo lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 465.8G 0 disk
├─sda1 8:1 0 1G 0 part /boot/efi
├─sda2 8:2 0 2G 0 part /boot
└─sda3 8:3 0 462.7G 0 part└─ubuntu--vg-ubuntu--lv 252:0 0 462.7G 0 lvm /
可以看到逻辑卷容量已经全部是 sda3 分区的容量了
1.3 替换镜像源/更新
# 查看当前镜像源, 发现是官方镜像源
cat /etc/apt/sources.list.d/ubuntu.sources# 备份
cp /etc/apt/sources.list.d/ubuntu.sources /etc/apt/sources.list.d/ubuntu.sources.bak# 替换成华为云镜像源
sudo sed -i 's|http://[a-z0-9\.]*\.archive\.ubuntu\.com|https://mirrors.huaweicloud.com|g' /etc/apt/sources.list.d/ubuntu.sources
sudo sed -i 's|http://security\.ubuntu\.com|https://mirrors.huaweicloud.com|g' /etc/apt/sources.list.d/ubuntu.sources# 更新软件包列表(同步本地软件包索引和远程仓库)
sudo apt update
# 升级所有已安装的软件包到最新版本(不处理依赖关系的重大变更)
sudo apt upgrade -y
# 清理无用包(系统运行并安装和卸载了不少东西后,使用,当前不需要执行)
sudo apt autoremove
国内其它镜像源
| 镜像站 | URIs 值 |
|---|---|
| 清华大学 | https://mirrors.tuna.tsinghua.edu.cn/ubuntu |
| 阿里云 | https://mirrors.aliyun.com/ubuntu |
| 中科大 | https://mirrors.ustc.edu.cn/ubuntu |
| 华为云 | https://mirrors.huaweicloud.com/ubuntu |
1.4 安装常用软件
sudo apt update && sudo apt install -y vim wget telnet net-tools lrzsz unzip gcc libnuma-dev dnsutils perl pciutils git wget htop jq make
显卡检查时会用到 lspci命令,该命令在 pciutils包中, 源码下载会用到git
2.显卡驱动安装
2.1确认显卡型号
lspci | grep -i nvidia
01:00.0 VGA compatible controller: NVIDIA Corporation TU102 [GeForce RTX 2080 Ti Rev. A] (rev a1)
01:00.1 Audio device: NVIDIA Corporation TU102 High Definition Audio Controller (rev a1)
01:00.2 USB controller: NVIDIA Corporation TU102 USB 3.1 Host Controller (rev a1)
01:00.3 Serial bus controller: NVIDIA Corporation TU102 USB Type-C UCSI Controller (rev a1)# 确认你运行的内核版本,然后安装对应的开发包:
# 查看当前运行的内核版本
uname -r
# 安装对应版本的内核开发包
sudo apt install -y "linux-headers-$(uname -r)"
确认内核版本以及安装对应版本内核开发包很重要,要不然驱动无法安装
2.2检查是否存在开源驱动nouveau
lsmod | grep nouveau
有输出说明存在。 开源驱动会与NVIDA 驱动冲突。我的是有输出的
如果存在,则需要关闭 nouveau 驱动
sudo tee /etc/modprobe.d/blacklist-nouveau.conf <<EOF
blacklist nouveau
options nouveau modeset=0
EOF
# 更新initramfs
sudo update-initramfs -u
# 重启
sudo reboot # 重启后确认,如果没有输出则表示已经关闭了
sudo lsmod | grep nouveau
2.3驱动下载
https://www.nvidia.cn/drivers/lookup/


选择一个版本下载

将下载的文件存放到
/home/qy/soft目录备用

2.4执行安装
cd /usr/local/src
# 添加可执行权限chmod +x NVIDIA-Linux-x86_64-580.105.08.run
# 执行安装sudo ./NVIDIA-Linux-x86_64-580.105.08.run
安装的时候,会让你选择许可证,我们直接选择 **NVIDIA Proprietary**即可
| 选项 | 许可证 | 特点 | 推荐选择 |
|---|---|---|---|
| NVIDIA Proprietary | 专有许可证 | • 传统的NVIDIA专有驱动 • 经过长期测试,稳定性高 • 与各种NVIDIA功能完全兼容 | 大多数用户 |
| MIT/GPL | 开源许可证 | • 较新的开源内核模块 • 更好的内核兼容性 • 遵循开源协议 | 特定场景用户 |
如果操作系统安装的是字符界面,则会出现一个警告:
WARNING: nvidia-installer was forced to guess the X library path ‘/usr/lib64’ and X module path ‘/usr/lib64/xorg/modules’;
这个警告信息表明NVIDIA安装程序无法自动检测到X Window系统的开发文件位置,解决这个警告你需要安装X.Org的开发包和pkg-config工具,
这个警告不会影响CUDA计算功能,只会影响图形显示,如果你只在字符界面使用Rocky Linux进行计算任务,可以暂时忽略这个警告
2.5 验证
# 若输出显示显卡信息、驱动版本,则安装成功
nvidia-smi

CUDA Version: 13.0 表示支持的 cuda 版本最高到 13.0 版本
3.安装CUDA
CUDA 是 Compute Unified Device Architecture 的缩写,是NVIDIA推出的并行计算平台和编程模型。
**本质:**让GPU不仅能处理图形,还能进行通用计算的平台
**作用:**允许开发者使用C/C++等语言直接在GPU上编写程序
**应用领域:**AI/深度学习、科学计算、数据分析、图形渲染等
前提条件,需要先安装 NVIDIA 驱动
nvidia-smi # 有输出,则确认驱动正常工作
3.1 下载CUDA Toolkit并安装
RTX 2080 Ti 的最优 CUDA 版本为 11.7 或 11.8,我们选择 11.8 版本下载,下载地址:https://developer.nvidia.com/cuda-toolkit-archive ,找到对应的版本,选择合适的环境下载。下载后,文件存放到 /home/qy/soft

cd ~/softwget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.runsudo sh cuda_11.8.0_520.61.05_linux.run
安装的时候,会出现错误:unsupported compiler version: 14.2.1. Use --override to override this check. 此时使用下面命令跳过检查。 原因是当前系统版本的gcc版本过高 ,cuda_11.8.0 不识别这个gcc版本。生产环境可以降低 gcc版本,比如gcc 10 版本。因为现在是测试,直接跳过检查
sudo sh cuda_11.8.0_520.61.05_linux.run --override

因为驱动已经安装了,所以这里需要将 “Driver” 选项去掉
安装完毕后,Toolkit 被安装在了
/usr/local/cuda-11.8, 同时有个链接文件/usr/local/cuda指向了这个目录
3.2环境变量配置
# 编辑bash配置文件
sudo vim ~/.bashrc# 添加以下内容
export PATH=/usr/local/cuda/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export CUDA_HOME=/usr/local/cuda# 使配置生效source ~/.bashrc
3.3验证
# 检查CUDA编译器
nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2022 NVIDIA Corporation
Built on Wed_Sep_21_10:33:58_PDT_2022
Cuda compilation tools, release 11.8, V11.8.89
Build cuda_11.8.r11.8/compiler.31833905_0# 检查CUDA工具包版本
nvidia-smi # 查看右上角的CUDA Version

nvidia-smi 显示的CUDA版本是驱动程序支持的最高 CUDA版本,不是实际安装的CUDA版本,使用
nvcc --version显示的才是实际安装的版本。
4.安装Conda
Conda 是一个开源的包管理和环境管理系统,最初由 Anaconda 公司开发,主要用于 Python 及其他语言(如 R、Ruby、Lua、Perl、Haskell、C/C++)的包管理和环境管理。它可以安装、更新、卸载软件包,并创建隔离的虚拟环境,使得不同项目之间的依赖不会相互干扰。Conda与pip的区别:

cd ~/soft
# 下载安装脚本
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh# 执行安装
sh Miniconda3-latest-Linux-x86_64.sh# 手动激活 base环境
eval "$(/home/qy/miniconda3/bin/conda shell.bash hook)"# 接收许可
conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/main
conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/r# 查看源
conda config --show-sources
==> /home/qy/miniconda3/.condarc <==
channels:- defaultsconda config --set show_channel_urls yesconda config --show channels# 自动激活base环境
conda config --set auto_activate_base true