ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Ubuntu 20.04 LTS生产级初始化配置指南:稳定优先的工程实践

Ubuntu 20.04 LTS生产级初始化配置指南:稳定优先的工程实践 简介本资源是一份面向Linux初学者、技术爱好者及开发者的Ubuntu 20.04 LTS操作系统落地实践指南系统解决从零开始安装与初始化配置的核心问题。内容覆盖镜像获取、Rufus制作启动盘、BIOS/UEFI启动项调整、单系统/双系统安装路径选择、磁盘分区策略、账户创建以及安装后必备的APT系统更新、常用软件Firefox、LibreOffice等安装和桌面环境个性化配置等全流程实操要点。资源为1个结构清晰的Word文档.docx共13KB轻量易读适合作为离线查阅手册或教学辅助材料。目前已有200人学习下载内容源自一线实践步骤详尽、命令可直接复用、关键选项有明确说明避免新手在引导界面误选或配置遗漏是构建稳定Linux工作环境的可靠入门依据。1. 为什么 Ubuntu 20.04 LTS 还值得今天装——不是怀旧是稳定压倒一切的工程选择你可能已经看到 Ubuntu 24.04 LTS 发布了也刷到过“20.04 已 EOL”的提醒其实没到——它官方支持期到 2025 年 4 月服务器版更是撑到 2030 年。但现实是大量嵌入式开发板如 Jetson Nano、树莓派 CM4 Ubuntu Core 镜像、工业边缘网关、CI/CD 构建节点、甚至部分金融/医疗行业的离线测试环境仍在用 20.04 作为默认基线。原因很实在CUDA 11.8 官方完整支持的最老 Ubuntu 版本就是 20.04ROS Noetic 只跑在 20.04很多国产中间件如达梦数据库 DM8、东方通 TONGWEB的认证操作系统列表里20.04 是唯一长期稳定通过的 Linux 发行版。这不是技术守旧而是当你的模型训练 pipeline 卡在nvidia-smi不识别、或 CI 流水线因glibc 2.34兼容性崩掉时一个已知、可复现、有完整补丁归档的系统底座比“新”重要十倍。本文不讲怎么装个桌面玩玩而是带你从裸机/VM 启动盘开始一步到位完成生产级初始化配置替换国内源、禁用自动更新扰动、预装 CUDA 11.8 兼容工具链、修复中文输入法玄学崩溃、固化关键环境变量、并绕过 Ubuntu 20.04 特有的systemd-resolvedDNS 冲突导致的apt update卡死问题。适合需要快速交付稳定开发/部署环境的嵌入式工程师、MLOps 工程师和高校实验室运维人员。2. 从零刻录启动盘到首次登录避开 BIOS/UEFI 模式错配与显卡黑屏两大翻车点Ubuntu 20.04 的安装过程表面平滑但两个底层细节常让新手在第 1 分钟就卡死一是启动介质制作时未区分 Legacy BIOS 和 UEFI 模式二是 NVIDIA 显卡在 Live 环境下直接黑屏。别急着重做 ISO先看本质原因和解法。2.1 刻录启动盘Rufus 选对模式Ventoy 用对分区表Ubuntu 官网下载的ubuntu-20.04.6-live-server-amd64.iso推荐 Server 版——无桌面干扰更贴近生产环境必须用UEFI 兼容方式刻录。实测发现在 Windows 下用 Rufus 刻录时目标设备类型必须选 “GPT 分区方案用于 UEFI 计算机”不是 MBR文件系统选 FAT32簇大小默认即可。若误选 MBR某些新主板如 Intel 12/13 代平台会进 BIOS 后根本看不到 USB 启动项。若用 Ventoy需确保 Ventoy 分区表为 GPT可通过diskpart → list disk → select disk X → detail disk查看“分区样式”是否为 GPT且 ISO 文件直接拷入 Ventoy 分区根目录不要解压、不要改名、不要放子文件夹。Ventoy 2.0.7 对 20.04 的内核参数兼容性已修复无需额外加nomodeset。提示验证启动盘是否有效可在刻录后进入 BIOS找到 “Boot Mode” 或 “CSM Support” 选项临时关闭 CSMCompatibility Support Module强制启用纯 UEFI 启动。这是避免“看到 USB 但进不去安装界面”的黄金操作。2.2 Live 环境黑屏急救NVIDIA 显卡的nomodeset不是万能解药如果你用的是 NVIDIA GTX 10xx / 16xx / 30xx 显卡尤其是笔记本独显直连机型Live 环境大概率黑屏。此时按e进入 GRUB 编辑模式在linux行末尾添加nomodeset是常规操作但 Ubuntu 20.04 的initramfs有个隐藏坑nomodeset会导致nouveau驱动加载失败进而触发dracut超时最终卡在Loading initial ramdisk。正确做法是在 GRUB 编辑界面找到linux开头的行将末尾的quiet splash替换为quiet splash nomodeset modprobe.blacklistnouveau按CtrlX启动。这样既禁用 nouveau 冲突又让内核跳过显卡模式设置保证 Live 环境能进 GUI 或 CLI。安装完成后再在正式系统中安装闭源驱动——这才是正向流程。2.3 安装过程中的三个必选动作安装向导看似简单但三处勾选直接影响后续 80% 的排障工作“Install third-party software for graphics and Wi-Fi hardware, Flash, MP3 and other media”✅ 必选。它会自动安装firmware-linux、firmware-iwlwifi等固件包避免装完无法联网或无线网卡失灵“Download updates while installing Ubuntu”❌ 建议取消。20.04 安装镜像自带的是 20.04.0 版本内核5.4.0-26而安装时联网更新会拉取最新内核如 5.4.0-200但该内核在某些老主板如 H110 芯片组上存在 ACPI 错误导致休眠唤醒失败。先装基础系统再手动更新更可控“Install Ubuntu alongside Windows Boot Manager”仅限双系统用户。若选此项务必确认 Windows 已关闭“快速启动”电源选项 → 选择电源按钮的功能 → 更改当前不可用的设置 → 取消勾选“启用快速启动”否则 Ubuntu 安装器无法正确识别 NTFS 分区会报错failed to get canonical path of /cow。安装完成后重启拔掉 U 盘首次登录前请记住默认用户是安装时设置的用户名密码是你输的密码root 用户被禁用Ubuntu 传统。如果登录后桌面卡顿或分辨率异常别慌——这是 GNOME 在 20.04 上对 Intel 核显的渲染优化未生效我们将在第 4 章用xrandr和gnome-tweaks一并解决。3. 初始化配置核心四步换源、关更新、装基础工具、设环境变量装完系统只是起点。Ubuntu 20.04 默认源archive.ubuntu.com在国内直连极慢且unattended-upgrades服务会在后台静默升级内核导致 CUDA 驱动失效。这四步必须在首次sudo apt update前完成否则后续所有操作都可能因网络超时或依赖冲突中断。3.1 替换为阿里云源一行命令搞定但要注意sources.list的架构分层Ubuntu 20.04 的源配置文件/etc/apt/sources.list是分架构的直接全量替换archive.ubuntu.com为mirrors.aliyun.com/ubuntu会出问题——因为security.ubuntu.com的安全更新源必须单独处理且updates和backports子源路径不能错。正确做法是用官方推荐的阿里云源生成器逻辑手动覆盖# 备份原文件养成习惯 sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak # 用 cat 写入阿里云源注意20.04 代号是 focal不是 groovy 或 jammy sudo tee /etc/apt/sources.list EOF deb https://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse deb https://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse deb https://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse deb https://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse EOF逻辑说明focal是 Ubuntu 20.04 的开发代号main官方支持软件、restricted受限驱动、universe社区维护开源软件、multiverse非自由协议软件四个组件缺一不可。focal-updates包含常规 bug 修复focal-security专管安全补丁focal-backports提供新特性回迁如新版 GCC。切勿删除focal-security行否则sudo apt upgrade会漏掉关键漏洞修复。执行后运行sudo apt update正常应 10 秒内完成索引更新。若仍卡住大概率是 DNS 问题见第 5 章避坑。3.2 彻底禁用自动更新不只是关服务还要删定时任务Ubuntu 20.04 默认启用unattended-upgrades它每 6 小时检查一次更新并自动安装安全补丁。这对服务器是好事但对开发机是灾难——某次自动升级linux-image-5.4.0-194-generic后NVIDIA 470 驱动编译失败CUDA 11.8nvcc报错kernel module not loaded。彻底禁用需三步# 1. 停止并禁用服务 sudo systemctl stop unattended-upgrades sudo systemctl disable unattended-upgrades # 2. 删除 APT 自动升级配置关键很多人只做第1步 sudo rm -f /etc/apt/apt.conf.d/20auto-upgrades # 3. 清空已排队的升级任务防止重启后触发 sudo rm -f /var/lib/apt/lists/lock sudo rm -f /var/cache/apt/archives/lock sudo dpkg --configure -a参数说明20auto-upgrades是控制自动更新的核心配置文件内容类似APT::Periodic::Update-Package-Lists 1;删掉它比systemctl disable更彻底。dpkg --configure -a用于修复因中断升级导致的包状态混乱避免后续apt install报dpkg was interrupted错误。3.3 一键安装开发必备工具链GCC/G/Make/Python3-pip/CURL/WGETUbuntu Server 默认只装最小化工具集连make和gcc都没有。以下命令安装的是CUDA 11.8 官方文档明确要求的最低版本组合GCC 9.3、Python 3.8.10、CMake 3.16# 更新索引确保源已生效 sudo apt update # 一次性安装核心工具-y 跳过确认 sudo apt install -y build-essential python3-dev python3-pip curl wget git vim net-tools # 验证版本重点看 GCC 和 Python gcc --version # 应输出 gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0 python3 --version # 应输出 Python 3.8.10注意build-essential是元包自动拉取gcc,g,make,dpkg-dev。不要单独apt install gcc否则可能漏装g导致 C 项目编译失败。python3-dev提供头文件是后续编译 PyTorch/CUDA 扩展的必需项。3.4 环境变量固化.bashrc与/etc/environment的分工真相很多教程教你在~/.bashrc里写export PATH...但遇到sudo make install或 systemd 服务时变量就失效。正确策略是分层设置用户级变量如JAVA_HOME,GOPATH写入~/.bashrc系统级全局变量如PATH增量、LANG写入/etc/environment它被 PAM 在登录时读取对所有 shell 和 service 生效# 1. 为当前用户添加常用别名和提示符写入 ~/.bashrc echo alias llls -alF ~/.bashrc echo PS1\u\h:\w\$ ~/.bashrc # 简洁提示符避免长路径刷屏 # 2. 全局 PATH 增量追加 /usr/local/bin避免覆盖原有 PATH echo PATH/usr/local/bin:$PATH | sudo tee -a /etc/environment # 3. 强制中文 locale解决 vim 中文乱码、pip install 报 Unicode 错误 echo LANGzh_CN.UTF-8 | sudo tee -a /etc/environment echo LC_ALLzh_CN.UTF-8 | sudo tee -a /etc/environment # 4. 重载配置 source ~/.bashrc关键区别/etc/environment是纯键值对格式无export由 PAM 解析而~/.bashrc是 shell 脚本只对交互式非登录 shell 生效。这就是为什么sudo env | grep PATH看不到~/.bashrc里的修改——必须用/etc/environment。4. 中文输入法与显卡驱动搜狗输入法崩溃、NVIDIA 驱动卸载不净的硬核解法Ubuntu 20.04 的中文生态有两个经典痛点搜狗输入法在 GNOME 下频繁崩溃日志显示segmentation fault以及 NVIDIA 驱动残留导致nvidia-smi不识别。这不是配置问题而是底层机制冲突必须用针对性方案。4.1 搜狗输入法安装放弃 deb 包用 fcitx5 sogoupinyin 源码编译Ubuntu 20.04 自带的fcitx框架4.x与搜狗官方 deb 包基于 fcitx5存在 ABI 不兼容。强行安装会导致ibus-daemon和fcitx争抢输入法总线GNOME 设置里输入法图标消失。可靠路径是直接编译 fcitx5-sogoupinyin# 1. 安装编译依赖Ubuntu 20.04 需要较新 cmake sudo apt install -y cmake extra-cmake-modules libxcb-xfixes0-dev libxcb-xinerama0-dev \ libxcb-randr0-dev libxcb-xtest0-dev libxcb-xkb-dev libxkbcommon-dev libxkbcommon-x11-dev \ libqt5svg5-dev libfcitx5core-dev libfcitx5config-dev libfcitx5utils-dev # 2. 克隆并编译使用官方 fcitx5 组织仓库非第三方 fork git clone https://github.com/fcitx5/fcitx5-sogoupinyin.git cd fcitx5-sogoupinyin mkdir build cd build cmake -DCMAKE_BUILD_TYPERelease -DCMAKE_INSTALL_PREFIX/usr .. make -j$(nproc) sudo make install # 3. 重启 fcitx5 服务 fcitx5-remote -r为什么不用 deb因为搜狗官网提供的sogoupinyin_4.0.1.2-2_amd64.deb依赖libfcitx5core1 ( 5.0.0)但 Ubuntu 20.04 官源只有libfcitx5core1 5.0.0~alpha1-1版本号比较逻辑导致apt install拒绝安装。源码编译绕过包管理器校验且能确保 ABI 一致。4.2 NVIDIA 驱动安装用.run文件而非apt install规避 DKMS 冲突Ubuntu 20.04 的apt install nvidia-driver-470会调用 DKMS 编译内核模块但在多内核环境下如同时装了 5.4.0-194 和 5.4.0-200DKMS 可能为错误内核编译导致nvidia-smi报Failed to initialize NVML: Driver/library version mismatch。终极解法是用 NVIDIA 官方.run文件指定内核头文件路径# 1. 卸载所有现存 NVIDIA 驱动暴力但有效 sudo /usr/bin/nvidia-uninstall -s # -s 参数静默卸载避免交互 # 2. 安装必要内核头必须与当前运行内核严格匹配 uname -r # 查看当前内核如 5.4.0-186-generic sudo apt install -y linux-headers-$(uname -r) linux-image-$(uname -r) # 3. 下载 CUDA 11.8 对应的驱动470.199.02非最新版 # 从 https://developer.nvidia.com/cuda-toolkit-archive 下载 cuda_11.8.0_520.61.05_linux.run # 注意运行前必须关闭图形界面CtrlAltF3 进 tty sudo systemctl stop gdm3 # Ubuntu Desktop 用 gdm3Server 无此服务 # 4. 执行安装关键参数--no-opengl-files 跳过 OpenGL 冲突--silent 静默 sudo sh cuda_11.8.0_520.61.05_linux.run --no-opengl-files --silent --override # 5. 重启图形服务 sudo systemctl start gdm3血泪经验--no-opengl-files是关键。Ubuntu 20.04 自带的 Mesa OpenGL 库与 NVIDIA 的libGL.so冲突不加此参数会导致glxinfo报错libGL error: unable to load driver: swrast_dri.so。--override强制忽略驱动与内核版本警告CUDA 11.8 文档明确支持 5.4.x 内核。4.3 GNOME 分辨率与缩放修复xrandr命令固化为开机脚本Intel 核显在 Ubuntu 20.04 GNOME 下常出现 1366x768 分辨率无法切换、HiDPI 缩放模糊等问题。Settings → Displays图形界面经常灰掉。用xrandr手动设置并固化# 1. 查看可用模式 xrandr --listmodes eDP-1 # eDP-1 是笔记本内置屏台式机可能是 HDMI-1 # 2. 添加自定义模式以 1920x108060Hz 为例 cvt 1920 1080 60 # 输出 Modeline: 1920x1080_60.00 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync vsync xrandr --newmode 1920x1080_60.00 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync vsync xrandr --addmode eDP-1 1920x1080_60.00 xrandr --output eDP-1 --mode 1920x1080_60.00 # 3. 固化为开机脚本避免每次登录重设 mkdir -p ~/.local/share/applications cat ~/.local/share/applications/xrandr-fix.desktop EOF [Desktop Entry] TypeApplication NameXrandr Fix Execsh -c xrandr --newmode \1920x1080_60.00\ 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync vsync xrandr --addmode eDP-1 \1920x1080_60.00\ xrandr --output eDP-1 --mode \1920x1080_60.00\ Hiddenfalse NoDisplayfalse X-GNOME-Autostart-enabledtrue EOF chmod x ~/.local/share/applications/xrandr-fix.desktop为什么不用~/.profile因为 GNOME 启动顺序中~/.profile在 X11 会话建立前执行xrandr命令会报Cant open display。.desktop文件由 GNOME Session Manager 在 GUI 启动后调用时机正确。5. 避坑指南Ubuntu 20.04 初始化中 5 个高频翻车现场及血泪解法这些坑我都在客户现场踩过三次以上不是理论推演是真实日志截图堆出来的经验。每个都附带journalctl或dmesg可验证的线索。5.1 现象sudo apt update卡在0% [Connecting to archive.ubuntu.com]超过 5 分钟原因Ubuntu 20.04 默认启用systemd-resolved其 stub listener127.0.0.53与国内 DNS如 114.114.114.114存在 TCP 连接超时且resolvconf未正确同步/etc/resolv.conf。解决# 停用 resolved改用静态 DNS sudo systemctl stop systemd-resolved sudo systemctl disable systemd-resolved echo nameserver 223.5.5.5 | sudo tee /etc/resolv.conf # 阿里 DNS echo nameserver 114.114.114.114 | sudo tee -a /etc/resolv.conf # 防止 NetworkManager 覆盖 sudo sed -i s/#DNS/DNS223.5.5.5/ /etc/NetworkManager/NetworkManager.conf sudo systemctl restart NetworkManager5.2 现象安装完 NVIDIA 驱动nvidia-smi显示No devices were found但lspci | grep -i nvidia能看到设备原因Secure Boot 启用状态下NVIDIA 内核模块未签名被内核拒绝加载。dmesg | grep -i nvidia会显示module verification failed: signature and/or required key missing。解决# 临时禁用 Secure BootBIOS 中设置或永久签名模块 # 方案1推荐BIOS 中关闭 Secure Boot # 方案2用 mokutil 签名需重启进 MOK 管理界面 sudo apt install mokutil sudo mokutil --import /var/lib/shim-signed/mok/MOK.der # 重启后按提示输入密码选择 Enroll MOK5.3 现象pip3 install torch报错ERROR: Could not find a version that satisfies the requirement torch原因Ubuntu 20.04 默认pip3版本过低20.0.2不支持 PyPI 的新轮子格式torch-2.0.1cu118-cp38-cp38-manylinux1_x86_64.whl。解决# 升级 pip 到 23.020.04 兼容的最高安全版 curl https://bootstrap.pypa.io/get-pip.py | sudo python3 pip3 install --upgrade pip setuptools wheel # 再装 PyTorch指定 CUDA 11.8 pip3 install torch2.0.1cu118 torchvision0.15.2cu118 --extra-index-url https://download.pytorch.org/whl/cu1185.4 现象中文输入法候选框位置错乱悬浮在屏幕右上角无法跟随光标原因GNOME 3.36 的ibus与fcitx5共存冲突且GTK_IM_MODULE环境变量未正确设置。解决# 彻底移除 ibus sudo apt remove ibus ibus-gtk3 ibus-libpinyin # 设置 GTK 输入法模块 echo export GTK_IM_MODULEfcitx5 ~/.bashrc echo export QT_IM_MODULEfcitx5 ~/.bashrc echo export XMODIFIERSimfcitx5 ~/.bashrc source ~/.bashrc # 重启 GNOME ShellAltF2 → r → Enter5.5 现象ssh连接后终端显示乱码ls中文文件名显示为??.txt原因SSH 服务端未启用 UTF-8 locale/etc/ssh/sshd_config中缺少AcceptEnv LANG LC_*。解决# 编辑 SSH 配置 sudo nano /etc/ssh/sshd_config # 确保以下两行存在且未注释 AcceptEnv LANG LC_* # 重启服务 sudo systemctl restart ssh # 客户端连接时加 -o SendEnvLANG,LC_ALL ssh -o SendEnvLANG,LC_ALL userhost6. 验证与加固用 3 个命令确认初始化完成并建立防退化快照做完前面所有步骤别急着写代码。用这 3 个命令交叉验证确保环境真正“稳”了。然后用 LVM 快照把此刻的干净状态固化下来——这是工程师的后悔药。6.1 三命令验证法网络、驱动、环境变量全链路检查# 命令1网络与源可用性10秒内返回 200 OK curl -I https://mirrors.aliyun.com/ubuntu/dists/focal/InRelease 2/dev/null | head -1 # 命令2NVIDIA 驱动与 CUDA 连通性必须同时输出 driver version 和 CUDA version nvidia-smi --query-gpuname,driver_version --formatcsv,noheader,nounits nvcc --version 21 | grep release # 命令3中文环境与输入法输出应为 zh_CN.UTF-8且 fcitx5-daemon 进程存在 locale pgrep -f fcitx5-daemon /dev/null echo fcitx5 running || echo fcitx5 not found预期输出示例HTTP/2 200Tesla V100-SXM2-32GB, 470.199.02nvcc: NVIDIA (R) Cuda compiler driver, release 11.8, V11.8.89LANGzh_CN.UTF-8fcitx5 running三项全绿才代表初始化真正闭环。6.2 LVM 快照为/逻辑卷创建可回滚的黄金镜像Ubuntu 20.04 Server 默认使用 LVMLogical Volume Manager这是它的隐藏优势——我们可以给根分区打快照后续任何作死操作如apt dist-upgrade升级到 22.04都能秒级回滚。注意快照需在 VGVolume Group有足够剩余空间建议 ≥20GB# 1. 查看卷组剩余空间 sudo vgdisplay ubuntu-vg | grep Free Pe # 2. 创建快照命名为 ubuntu-init-snap大小 15G sudo lvcreate -L 15G -s -n ubuntu-init-snap /dev/ubuntu-vg/root # 3. 验证快照应显示 active snapshot 状态 sudo lvs # 4. 【可选】将快照挂载到临时目录备份关键配置 sudo mkdir -p /mnt/snap sudo mount /dev/ubuntu-vg/ubuntu-init-snap /mnt/snap sudo tar -czf /root/ubuntu-init-config-backup.tar.gz -C /mnt/snap etc/apt/sources.list etc/environment sudo umount /mnt/snap关键参数说明-s表示创建快照snapshot-L 15G是快照卷大小不是原始卷大小它只存储变化块15G 足够覆盖 3 个月内的配置修改。/dev/ubuntu-vg/root是 Ubuntu 20.04 Server 默认根逻辑卷路径可通过sudo lvdisplay确认。6.3 快照回滚实战当apt upgrade把系统搞崩后3 分钟恢复假设你手滑执行了sudo apt full-upgrade结果 GNOME 桌面无法启动或者nvidia-smi报错。别重装用快照回滚# 1. 重启进 recovery modeGRUB 菜单 → Advanced options → Ubuntu, with Linux ... (recovery mode) # 2. 选择 root Drop to root shell prompt # 3. 执行回滚关键先停用原卷再合并快照 lvconvert --merge /dev/ubuntu-vg/ubuntu-init-snap # 4. 重启快照自动删除原卷恢复到创建时状态 reboot -f注意lvconvert --merge只能在原逻辑卷未激活时运行所以必须进 recovery mode。合并后第一次启动会稍慢因数据同步但之后完全无感。这是我给客户部署的 50 台边缘服务器的标准运维动作——环境可变快照永存。最后说句实在的Ubuntu 20.04 不是古董它是经过五年高强度工业场景锤炼的“Linux 稳定器”。我坚持在新项目里用它不是因为懒而是因为当客户凌晨三点打电话说“训练任务卡在数据加载”我能确定问题不在操作系统层——这省下的排查时间够你多跑三轮实验。希望帮到你。本文还有配套的精品资源点击获取
返回列表