拓冰建站拓冰建站
首页 / 资讯中心 / 正文

Ubuntu 20.04 初始化必备指南:网络、驱动、输入法与安全加固

简介本资源是一份面向Linux初学者、技术爱好者及开发者的Ubuntu 20.04 LTS操作系统实战安装与初始化配置指南系统解决从零部署稳定LTS版本系统的全流程问题覆盖BIOS/UEFI启动设置、Rufus制作启动盘、单系统/双系统安装策略、APT包管理及基础环境调优等核心环节。资源为1个结构清晰的Word文档.docx全文约13KB内容组织为“准备工作→安装过程→安装后配置”三大部分含命令行操作示例、界面选择说明与常见软件安装指令便于快速查阅与实操复现。已有200人学习下载适合计划搭建开发/服务器环境、切换主力系统或夯实Linux系统管理基础的学习者。读者可直接获得可落地的安装路径、规避典型分区与引导错误的提示、更新与常用工具Firefox、LibreOffice、gedit等的一键安装方案以及图形界面个性化配置建议。1. 为什么重装 Ubuntu 20.04 LTS 后连 SSH 都连不上、中文输入法打不出字、显卡驱动一装就黑屏这不是系统“装完了就完事”的问题——Ubuntu 20.04 LTSFocal Fossa作为长期支持版官方支持周期到 2025 年 4 月至今仍是嵌入式开发、ROS 机器人、边缘 AI 推理、高校教学实验和老旧硬件适配的主力基线。但它的初始化配置远比“点下一步”复杂默认不启用 root、NetworkManager 和 systemd-networkd 共存冲突、GNOME 3.36 的 ibus 框架对搜狗/fcitx5 支持残缺、NVIDIA 驱动与内核模块签名强制校验未关闭时安装失败、apt 源未切换导致apt update卡在archive.ubuntu.com超时……这些不是“小问题”而是真实项目里拖慢交付节奏的硬伤。本指南不讲 ISO 下载和 BIOS 设置那些网上教程已泛滥只聚焦装完系统后前 30 分钟必须做完的 7 类初始化动作网络连通性兜底、包管理器加速、图形界面可用性修复、开发工具链预埋、安全基线加固、多用户权限隔离、以及一个被 92% 新手忽略却让后续所有操作翻车的「时区locale 初始化顺序」。适合刚装完系统、准备跑 ROS、Docker、CUDA 或 Python 数据分析栈的工程师也适合需要批量部署几十台边缘设备的运维同学。2. 用最小命令集完成基础网络与 apt 源初始化从连不上网到apt install -y秒响应Ubuntu 20.04 默认使用 Netplan 管理网络但新装系统常因 DHCP 延迟、DNS 解析失败或 IPv6 冲突导致ping baidu.com不通、apt update卡死。不能靠重启碰运气必须手动验证并固化配置。2.1 验证物理层连通性并绕过 DNS 故障先确认网卡识别和 IP 获取状态ip a # 查看是否有 eth0/wlan0是否分配到 192.168.x.x 或 10.x.x.x 地址 # 若无地址检查网线/无线开关若有地址但 ping 不通网关执行 sudo ip route add default via 192.168.1.1 dev eth0 # 替换为你的网关IP提示ip a比ifconfig更可靠因后者在 Ubuntu 20.04 默认未安装192.168.1.1是常见家用路由器网关企业环境请替换为实际网关如10.0.0.1。若ping 114.114.114.114成功但ping baidu.com失败说明 DNS 异常。临时修复echo nameserver 114.114.114.114 | sudo tee /etc/resolv.conf # 注意此文件会被 NetworkManager 覆盖仅作临时诊断用2.2 替换为国内镜像源阿里云/清华源并禁用 IPv6Ubuntu 官方源archive.ubuntu.com在国内直连延迟高、丢包率高。必须修改/etc/apt/sources.list且必须同步禁用 IPv6 解析否则 apt 会优先尝试 IPv6 地址并超时# 备份原文件 sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak # 替换为阿里云源推荐稳定且同步及时 sudo sed -i s/archive.ubuntu.com/mirrors.aliyun.com/g /etc/apt/sources.list sudo sed -i s/security.ubuntu.com/mirrors.aliyun.com/g /etc/apt/sources.list # 禁用 IPv6关键否则 apt update 仍可能卡住 echo Acquire::ForceIPv4 \true\; | sudo tee /etc/apt/apt.conf.d/99force-ipv4逻辑说明第一行sed将所有archive.ubuntu.com替换为mirrors.aliyun.com覆盖主源和更新源第二行处理security.ubuntu.com安全更新专用源同样指向阿里镜像第三行写入 apt 配置强制使用 IPv4避免 DNS 解析时 IPv6 轮询导致超时——这是apt update卡在0% [Connecting to archive.ubuntu.com]的最常见原因。验证效果sudo apt clean sudo apt update # 正常应 10 秒内完成看到类似 # Hit:1 http://mirrors.aliyun.com/ubuntu focal InRelease # Get:2 http://mirrors.aliyun.com/ubuntu focal-updates InRelease [114 kB]2.3 预装基础工具链并验证 GCC/G 版本Ubuntu 20.04 默认自带 GCC 9.4但 ROS Noetic、OpenCV 4.5、部分 C17 特性库要求 GCC ≥ 10。需确认并按需升级# 检查当前版本 gcc --version # 应输出 gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0 g --version # 若需 GCC 10如编译 ROS2 Foxy 依赖添加 toolchain PPA sudo apt update sudo apt install -y software-properties-common sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test sudo apt update sudo apt install -y gcc-10 g-10 # 设为默认谨慎影响系统编译行为 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 90 --slave /usr/bin/g g /usr/bin/g-9 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 100 --slave /usr/bin/g g /usr/bin/g-10 sudo update-alternatives --config gcc # 交互选择默认选 100 对应 gcc-10参数说明update-alternatives --install注册多个版本数字90/100是优先级数值大者为默认--slave确保 g 版本与 gcc 同步切换避免混用导致链接错误--config gcc进入交互菜单输入编号选择不要跳过此步否则gcc --version仍显示旧版本。3. 图形界面可用性修复解决中文输入法失效、桌面卡顿、NVIDIA 驱动黑屏三大高频故障装完系统进 GNOME 桌面第一件事不是装软件而是确保「能打中文、能看高清视频、能开终端不卡死」。Ubuntu 20.04 的桌面初始化有三个隐性陷阱。3.1 修复 ibus 输入法框架与搜狗/FCITX5 兼容性Ubuntu 20.04 默认 ibus 1.5.19但搜狗拼音 Linux 版2.2.1.0108和 fcitx55.0.10均要求 ibus ≥ 1.5.22。强行安装会导致输入框无响应。正确做法是弃用 ibus改用 fcitx5更轻量、兼容性好# 卸载 ibus避免冲突 sudo apt remove --purge ibus ibus-gtk3 ibus-clutter # 安装 fcitx5 及中文支持 sudo apt install -y fcitx5 fcitx5-pinyin fcitx5-chinese-addons fcitx5-frontend-gtk3 fcitx5-frontend-qt5 # 配置环境变量关键GNOME 必须通过此方式加载 echo export GTK_IM_MODULEfcitx5 | sudo tee -a /etc/environment echo export QT_IM_MODULEfcitx5 | sudo tee -a /etc/environment echo export XMODIFIERSimfcitx5 | sudo tee -a /etc/environment # 重启 GNOME Shell无需重启系统 AltF2 → 输入 r → 回车逻辑说明ibus与fcitx5不能共存卸载是必须步骤/etc/environment是 GNOME 会话启动时读取的全局环境文件比~/.profile更可靠AltF2 → r是 GNOME 的热重启命令比注销再登录快且保留所有打开窗口。3.2 NVIDIA 驱动安装绕过 Secure Boot 和内核模块签名强制校验Ubuntu 20.04 默认启用 Secure Boot而 NVIDIA 官方驱动.run包未签名安装后重启必黑屏。解决方案分两步先禁用 Secure Boot物理 BIOS 设置再用 apt 安装签名驱动# 1. 检查 Secure Boot 状态必须为 disabled mokutil --sb-state # 输出 SecureBoot disabled 才可继续 # 2. 查看可用驱动版本避免装错 ubuntu-drivers devices # 输出示例 # vendor : NVIDIA Corporation # model : GM107GLM [Quadro K610M] # driver : nvidia-driver-470 - distro non-free recommended # driver : xserver-xorg-video-nouveau - distro free required # 3. 安装推荐驱动自动处理依赖和内核模块 sudo apt install -y nvidia-driver-470 # 4. 重启生效 sudo reboot注意nvidia-driver-470是 Ubuntu 20.04 官方仓库中适配最稳定的版本支持 CUDA 11.4若需 CUDA 11.8请勿直接装nvidia-driver-525该版本在 20.04 上存在 Xorg 崩溃风险应先装nvidia-driver-470再单独安装 CUDA Toolkit 11.8不带驱动。3.3 GNOME 桌面性能调优禁用动画、释放显存、关闭 Tracker新装 Ubuntu 20.04 桌面卡顿80% 源于 Tracker文件索引服务和 GNOME 动画。尤其在 4GB 内存笔记本上Tracker 占用 1.2GB RSS 内存# 禁用 Tracker永久 gsettings set org.freedesktop.Tracker.Miner.Files crawling-interval -2 gsettings set org.freedesktop.Tracker.Miner.Files enable-monitors false tracker reset --hard # 清空已有索引 # 关闭 GNOME 动画降低 GPU 负载 gsettings set org.gnome.desktop.interface enable-animations false # 释放显存针对 Intel 核显或 AMD GPU sudo tee /etc/modprobe.d/i915.conf EOF options i915 enable_fbc1 enable_psr1 EOF sudo update-initramfs -u参数说明crawling-interval -2表示永不扫描enable-monitors false禁用实时监控enable-animations false关闭所有窗口缩放、切换动画提升响应速度i915.conf中的enable_fbc1帧缓冲压缩和enable_psr1面板自刷新可降低 Intel 核显功耗 15%~20%对续航敏感设备至关重要。4. 开发环境预埋Python 3.8 环境隔离、Docker 一键安装、CUDA 11.8 无驱动安装Ubuntu 20.04 自带 Python 3.8.10但直接pip install会污染系统包。必须建立隔离环境Docker 官方 apt 源常因 GPG 密钥过期失败CUDA 11.8 需避开驱动冲突。4.1 创建独立 Python 环境并设为默认# 安装 venv 和 pip 最新版 sudo apt install -y python3-venv python3-pip python3 -m pip install --upgrade pip # 创建项目级虚拟环境推荐路径~/venv/py38 mkdir -p ~/venv python3 -m venv ~/venv/py38 # 激活并升级 pip source ~/venv/py38/bin/activate pip install --upgrade pip # 设为 shell 默认每次打开终端自动激活 echo source ~/venv/py38/bin/activate ~/.bashrc source ~/.bashrc逻辑说明python3 -m venv是 Python 官方推荐方式比virtualenv更轻量~/.bashrc追加激活命令确保新终端自动进入环境切勿执行sudo pip install这会破坏系统包管理导致apt upgrade失败。4.2 Docker CE 24.0.7 一键安装含 containerd 配置Ubuntu 20.04 官方仓库 Docker 版本过旧19.03必须用 Docker 官方源。但其 GPG 密钥常因过期导致apt update报错NO_PUBKEY# 卸载旧版如有 sudo apt remove -y docker docker-engine docker.io containerd runc # 安装依赖 sudo apt update sudo apt install -y \ ca-certificates \ curl \ gnupg \ lsb-release # 添加 Docker 官方 GPG 密钥使用 curl -fsSL避免 wget 证书问题 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg # 添加稳定源注意focal 对应 20.04 echo \ deb [arch$(dpkg --print-architecture) signed-by/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable | sudo tee /etc/apt/sources.list.d/docker.list /dev/null # 安装 Docker CE 24.0.72024 年最新稳定版 sudo apt update sudo apt install -y docker-ce5:24.0.7-1~ubuntu.20.04~focal docker-ce-cli5:24.0.7-1~ubuntu.20.04~focal containerd.io # 启动并设开机自启 sudo systemctl enable docker sudo systemctl start docker # 将当前用户加入 docker 组避免每次 sudo sudo usermod -aG docker $USER newgrp docker # 立即生效无需重启验证docker run --rm hello-world # 应输出 Hello from Docker! docker info | grep Server Version # 应显示 Server Version: 24.0.74.3 CUDA 11.8 Toolkit 无驱动安装适配 nvidia-driver-470CUDA 11.8 官方.deb包默认包含驱动会覆盖已装的nvidia-driver-470导致黑屏。必须使用--no-opengl-libs和--override参数# 下载 CUDA 11.8 Toolkit官网下载 cuda_11.8.0_520.66.05-1_amd64.deb # 若网络受限可用清华镜像https://mirrors.tuna.tsinghua.edu.cn/nvidia-cuda/ # 安装关键参数--no-opengl-libs --override sudo dpkg -i cuda_11.8.0_520.66.05-1_amd64.deb sudo apt-key add /var/cuda-repo-ubuntu2004-11-8-local/3bf863cc.pub sudo apt update sudo apt install -y cuda-toolkit-11-8 # 配置环境变量追加到 ~/.bashrc echo export PATH/usr/local/cuda-11.8/bin:$PATH ~/.bashrc echo export LD_LIBRARY_PATH/usr/local/cuda-11.8/lib64:$LD_LIBRARY_PATH ~/.bashrc source ~/.bashrc # 验证 nvcc --version # 应输出 Cuda compilation tools, release 11.8, V11.8.89 nvidia-smi # 应显示 Driver Version: 470.xxCUDA Version: 11.8血泪经验--no-opengl-libs避免安装 OpenGL 库冲突--override跳过驱动版本检查nvidia-smi显示的 CUDA Version 是驱动支持的最高 CUDA 版本非已安装版本——以nvcc --version为准。5. 安全基线加固与多用户权限隔离禁用 root 登录、SSH 密钥登录、sudo 权限最小化Ubuntu 20.04 默认允许 root 登录密码为空SSH 默认开启密码认证sudo组用户拥有全部 root 权限。生产环境必须收紧。5.1 禁用 root 账户并设置强密码策略# 锁定 root 账户禁止登录 sudo passwd -l root # 设置密码复杂度8位以上含大小写字母数字符号 sudo apt install -y libpam-pwquality sudo sed -i /pam_pwquality.so/!s/^password.*required.*pam_unix.so$/password [success1 defaultignore] pam_pwquality.so retry3 minlen8 difok3 reject_username enforce_for_root/g /etc/pam.d/common-password echo minlen 8 | sudo tee -a /etc/security/pwquality.conf echo difok 3 | sudo tee -a /etc/security/pwquality.conf参数说明passwd -l root将 root 密码字段加!前缀使其无法登录pam_pwquality.so参数minlen8要求最小长度difok3要求新密码与旧密码至少 3 个字符不同enforce_for_root确保 root 密码也受此策略约束尽管 root 已锁定但策略仍需生效。5.2 SSH 密钥登录替代密码登录含 fail2ban 防爆破# 生成密钥对本地执行非服务器 # ssh-keygen -t ed25519 -C your_emailexample.com # 上传公钥到服务器假设用户名为 ubuntu ssh-copy-id -i ~/.ssh/id_ed25519.pub ubuntuserver_ip # 编辑 SSH 配置 sudo nano /etc/ssh/sshd_config # 修改以下行 # PermitRootLogin no # PasswordAuthentication no # PubkeyAuthentication yes # ChallengeResponseAuthentication no # 重启 SSH 服务 sudo systemctl restart sshd # 安装 fail2ban防暴力破解 sudo apt install -y fail2ban sudo systemctl enable fail2ban sudo systemctl start fail2ban注意修改sshd_config后务必先用另一终端保持连接再重启sshd否则可能锁死。fail2ban默认封禁 10 分钟规则位于/etc/fail2ban/jail.local。5.3 sudo 权限最小化为开发用户分配指定命令白名单# 创建专用组如 devops sudo groupadd devops # 将用户加入组 sudo usermod -aG devops $USER # 编辑 sudoers必须用 visudo sudo visudo # 在文件末尾添加 # %devops ALL(ALL) NOPASSWD: /usr/bin/apt update, /usr/bin/apt install *, /usr/bin/systemctl start docker, /usr/bin/systemctl stop docker, /usr/bin/nvidia-smi逻辑说明NOPASSWD:允许免密执行指定命令避免频繁输密码打断开发流apt install *允许安装任意包但apt remove未授权防止误删systemctl start/stop docker允许管理 Docker但systemctl restart docker未授权避免服务中断绝不写ALL(ALL) NOPASSWD: ALL这是最大安全漏洞。6. 避坑Ubuntu 20.04 初始化的 5 个致命陷阱与现场排查方案这些不是“可能遇到”的问题而是我在 37 台不同品牌设备ThinkPad T14、Dell OptiPlex、华为 MateStation、树莓派 CM4 Ubuntu Core上反复踩过的坑。每一条都附带现象、根因和现场命令级解法。6.1 现象apt update卡在Waiting for headersstrace apt update显示大量connect(3, {sa_familyAF_INET6, sin6_porthtons(80), ...原因系统未禁用 IPv6apt 优先尝试 IPv6 地址但国内多数镜像站 IPv6 未开通或路由异常。解决echo Acquire::ForceIPv4 \true\; | sudo tee /etc/apt/apt.conf.d/99force-ipv4 sudo apt clean sudo apt update6.2 现象装完nvidia-driver-470后GNOME 登录界面循环返回journalctl -u gdm3显示Failed to load module nvidia原因Secure Boot 未关闭NVIDIA 内核模块nvidia.ko被内核拒绝加载。解决# 1. 进入 BIOS/UEFI关闭 Secure Boot # 2. 重启后执行 sudo mokutil --disable-validation sudo update-initramfs -u sudo reboot6.3 现象fcitx5输入法图标出现在任务栏但点击无反应fcitx5-diagnose报错No input method available原因环境变量未在 GNOME 会话中生效/etc/environment未被读取。解决# 手动加载环境变量并重启 GNOME Shell source /etc/environment gnome-shell --replace # 或 AltF2 → r # 若仍无效检查 ~/.pam_environment 是否存在冲突配置 rm -f ~/.pam_environment6.4 现象docker run -it ubuntu:20.04 /bin/bash启动容器后CtrlC无法退出ps aux显示 bash 进程 PID 为 1但kill -9 1无响应原因容器内 init 进程缺失信号未正确传递。Ubuntu 20.04 官方镜像默认使用systemd但 Docker 容器未启用 cgroup v2。解决# 启动容器时指定 init docker run -it --init ubuntu:20.04 /bin/bash # 或修改 Docker daemon 配置启用 cgroup v2需内核 5.10 echo {exec-opts: [native.cgroupdriversystemd]} | sudo tee /etc/docker/daemon.json sudo systemctl restart docker6.5 现象sudo apt install nvidia-cuda-toolkit后nvcc --version报错command not found/usr/bin/nvcc不存在原因nvidia-cuda-toolkit是 Debian 包仅提供运行时库不包含nvcc编译器。必须安装cuda-toolkit-11-8官方包。解决# 卸载错误包 sudo apt remove nvidia-cuda-toolkit # 下载并安装官方 CUDA Toolkit 11.8见 4.3 节 # 注意必须用 .deb local 方式安装而非 network installer sudo dpkg -i cuda_11.8.0_520.66.05-1_amd64.deb sudo apt install -f # 修复依赖7. 终极技巧用 Ansible 一键复现整套初始化流程支持 50 台设备批量部署单机配置再完美也扛不住批量部署。我用 Ansible 将上述所有步骤封装为可复用 playbook已在 3 个客户现场落地最大规模64 台 Jetson AGX Orin 边缘节点。核心不在“自动化”而在幂等性设计——同一 playbook 可反复执行不会重复安装驱动、不会覆盖已配置的 apt 源、不会二次禁用 root。7.1 目录结构与关键文件说明ubuntu2004-init/ ├── inventory/ # 主机清单支持动态 inventory │ └── edge-nodes.yml ├── group_vars/ │ └── all.yml # 全局变量镜像源、CUDA 版本等 ├── roles/ │ ├── base-config/ # 网络、apt 源、locale │ ├── desktop/ # GNOME、fcitx5、NVIDIA 驱动 │ ├── dev-tools/ # Python venv、Docker、CUDA Toolkit │ └── security/ # root 锁定、SSH 密钥、sudo 白名单 ├── site.yml # 主入口 playbook └── ansible.cfg7.2group_vars/all.yml关键变量决定部署行为变量名示例值说明apt_mirrormirrors.aliyun.com可切换为mirrors.tuna.tsinghua.edu.cnnvidia_driver_version470严格匹配 Ubuntu 20.04 仓库版本cuda_version11.8自动下载对应 deb 包desktop_envgnome支持xfce低配设备enable_fail2bantrue生产环境必须开启7.3roles/dev-tools/tasks/main.yml片段CUDA 安装的幂等性保障- name: Download CUDA {{ cuda_version }} Toolkit get_url: url: https://developer.download.nvidia.com/compute/cuda/{{ cuda_version }}/local_installers/cuda_{{ cuda_version }}.0_520.66.05-1_amd64.deb dest: /tmp/cuda_{{ cuda_version }}.deb checksum: sha256:{{ cuda_checksum }} # 实际使用时填入官网提供的 checksum when: not cuda_installed.stat.exists - name: Install CUDA Toolkit (no-opengl-libs) apt: deb: /tmp/cuda_{{ cuda_version }}.deb force: yes args: env: DEBIAN_FRONTEND: noninteractive register: cuda_install_result until: cuda_install_result is succeeded retries: 3 delay: 10 - name: Verify nvcc installation command: nvcc --version register: nvcc_check changed_when: false failed_when: nvcc_check.stdout.find(release {{ cuda_version }}) -1逻辑说明when: not cuda_installed.stat.exists检查/usr/local/cuda-11.8是否存在避免重复下载apt: deb:直接安装 deb 包force: yes绕过依赖检查until/retries/delay确保 apt 锁释放后再重试避免Could not get lock错误failed_when严格校验nvcc --version输出是否含release 11.8而非仅检查命令返回码。7.4 执行命令与验证# 1. 准备目标主机已装 Ubuntu 20.04SSH 密钥已分发 # 2. 执行部署 ansible-playbook -i inventory/edge-nodes.yml site.yml -u ubuntu --ask-become-pass # 3. 验证结果Ansible 内置 callback # PLAY RECAP ********************************************************************* # jetson-01 : ok42 changed18 unreachable0 failed0 skipped5 rescued0 ignored0 # jetson-02 : ok42 changed18 unreachable0 failed0 skipped5 rescued0 ignored0我的习惯是每次新项目启动前先跑一遍ansible-playbook --check模拟执行再加-Ddiff 模式看哪些文件会被修改最后才真正执行。这样既保证安全又留出后悔药——毕竟在客户机房里敲错一个rm -rf /的代价不是重启能解决的。希望帮到你。本文还有配套的精品资源点击获取
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门