ARTICLE DETAIL

资讯详情

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

Ubuntu 新装系统后必做的 5 件事:从换源到安装 Docker,告别低效配置

Ubuntu 新装系统后必做的 5 件事:从换源到安装 Docker,告别低效配置 很多朋友刚装完 Ubuntu 的第一天大概率是这样度过的先打开设置挑一张好看的壁纸再装一个主题管理器把图标、光标、终端配色全部换一遍接着折腾 GNOME 扩展给桌面加上动画和特效。一上午下来桌面确实变得赏心悦目了。但真正到要干正事的时候软件源没换系统更新卡在慢速网络里中文输入法切换不出来代码注释只能吃英文显卡驱动还是开源默认版跑个深度学习框架就报 CUDA 不可用。换壁纸的劲头很足但都用错了地方。本文想聊一个更务实的思路新装 Ubuntu 之后与其先折腾外观不如先把系统基础加固好、把开发环境搭起来。等你能流畅地安装软件、切换输入法、驱动显卡、跑起 Docker 容器再回头慢慢美化也不迟。这篇文章会从系统安装后的第一顿操作讲起覆盖换源、更新、输入法、显卡驱动、Docker 安装等新手机必踩的环节也会附上完整命令和排错思路。无论你是刚从 Windows 切过来的新人还是准备用 Ubuntu 做开发服务器的后端工程师这篇都应该能帮上忙。1. 别急着换壁纸先想清楚 Ubuntu 到底卡在哪1.1 一个常见场景新装 Ubuntu 后的误区很多教程会告诉你“装完 Ubuntu 后先美化”于是你看到桌面上什么都是默认的就忍不住想动手。但默认桌面难看不代表系统不健康。真正影响你后续体验的是软件源是否可用、驱动是否匹配、输入法能否正常切换、容器环境是否配置好。举个例子。你高高兴兴地把壁纸换成了 4K 风景图然后想去apt install nginx结果系统一直卡在“连接 archive.ubuntu.com”几十分钟毫无反应因为默认软件源在国外网络延迟很高。这时候你会意识到换壁纸解决不了源速度的问题。1.2 换壁纸和系统优化的本质区别换壁纸属于“视觉层”操作它不会改变系统中软件包的来源、不会影响硬件驱动的加载、不会改动系统服务。而换源、装驱动、配输入法、装 Docker 这些操作属于“功能层”和“性能层”它们决定了 Ubuntu 能不能稳定、快速地为你服务。更准确地说美化是锦上添花而基础配置是地基。地基没打牢墙刷得再白也住不踏实。所以本文建议的新手优先级是这样第一优先软件源可用系统能正常更新和安装软件。第二优先输入法和常用办公开发工装好保证日常使用。第三优先显卡驱动、网络配置、外设等硬件兼容处理。第四优先Docker、编程语言、数据库等开发环境。第五优先系统美化、桌面主题、壁纸和动效。1.3 适合哪些读者这篇文章的读者主要有两类刚接触 Linux、在虚拟机上装好 Ubuntu 但不知道下一步该干什么的新手。工作中要使用 Ubuntu 做开发或部署想快速搭建一套稳定开发环境的后端、测试或运维同学。如果你已经对 Ubuntu 很熟可以直接跳到第 4 节看完整的搭建流程也可以把第 6 节的排查清单当作速查表。2. 环境准备与版本说明2.1 本文示例环境为了让教程里的命令可复现本文以 Ubuntu 22.04 LTS代号 jammy为例。你用的是 20.04、24.04 或其他发行版时部分软件源地址和包名会有差别需要根据实际情况修改。为什么要选择 LTS 版本LTSLong Term Support版本提供长达五年的安全和维护更新是生产环境和新手入门的推荐选择。比如 22.04 LTS 和 24.04 LTS 都适合日常使用和开发。不建议长期使用非 LTS 的中间版本因为生命周期短升级频繁容易出问题。命令环境是默认的 bash桌面环境是 GNOME。如果你的 Ubuntu 使用的是 KDE、XFCE 等桌面输入法配置可能略有不同但软件源和系统级命令是通用的。2.2 开始前需要准备的材料在开始配置前建议你先准备好以下内容一台能联网的 Ubuntu 主机或虚拟机。一个具有 sudo 权限的普通用户不建议直接用 root 操作日常环境。可用的终端模拟器默认按Ctrl Alt T打开。如果安装显卡驱动需要知道显卡型号。可以用lspci | grep -i vga查看。lspci | grep -i vga输出示例00:02.0 VGA compatible controller: Intel Corporation UHD Graphics 620 01:00.0 3D controller: NVIDIA Corporation GP108M [GeForce MX150]这里能看到你的显卡是 Intel、NVIDIA 还是 AMD。NVIDIA 独立显卡在 Ubuntu 下通常需要额外安装闭源驱动Intel 和 AMD 大多开源驱动自带。2.3 关于版本差异的提醒Ubuntu 不同版本的软件源地址中分布代号不同。22.04 是jammy20.04 是focal24.04 是noble。如果直接照搬网上的源配置却把自己的系统版本搞混就会出现“无法下载软件包”的报错。后面换源部分会专门说明如何确定自己的版本代号。另外Ubuntu 的软件包更新很快命令输出可能与本文示例不完全一致这属于正常现象。遇到问题时优先根据错误信息判断而不是盲目重装。3. 新装 Ubuntu 后必做的几件事3.1 更新软件源换源的核心逻辑软件源apt source是 Ubuntu 获取软件包的服务地址。默认配置文件是/etc/apt/sources.list如果系统使用的是新的deb822格式则可能在/etc/apt/sources.list.d/ubuntu.sources。大多数情况下国内用户访问官方源速度慢所以需要换成国内镜像源例如阿里云、清华、中科大等。换源的操作思路是三步备份原始源配置方便回滚。将源地址替换为国内镜像。执行apt update刷新索引验证源是否生效。以 Ubuntu 22.04 为例把/etc/apt/sources.list改为阿里云源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 sudo apt update如果你不想用 sed 替换也可以直接编辑文件sudo vim /etc/apt/sources.list写入以下内容仅适用于 22.04 jammydeb https://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse deb https://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse deb https://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse deb https://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse这里要注意有些教程会保留deb-src源但普通用户用不到源码包删掉反而能加快apt update的速度。查看当前系统代号可以用以下命令lsb_release -a或者cat /etc/os-release确认输出中的VERSION_CODENAME是jammy还是其他值然后再替换源地址。3.2 系统升级与常用软件安装换完源后第一件事是更新系统到最新状态sudo apt update sudo apt upgrade -yapt update是从源拉取软件包索引apt upgrade会把系统中已安装的软件包升级到当前源里的新版本。第一次升级通常耗时较长和网络状况有关建议耐心等待。升级完成后可以安装一些基础工具方便后续操作sudo apt install -y build-essential curl wget git vim net-tools openssh-server htop tree ca-certificates apt-transport-https这些工具各自的用途build-essential包含 gcc、g、make 等编译工具很多源码安装和扩展编译都依赖它。curl、wget命令行下载工具。git版本控制工具。vim编辑器服务器上最常用的编辑工具。net-tools提供ifconfig、netstat等命令。openssh-server远程登录服务方便从其他机器连接开发机。htop交互式资源监控工具。tree以树形结构显示目录。安装完成后可以用htop简单看一眼系统负载htop按q退出。这个工具在排查系统卡顿、CPU 占用过高时非常好用。3.3 查看系统架构和硬件信息很多初学者分不清x86_64、amd64、arm64这些名词。Linux 下用uname -m可以查看内核架构uname -m输出为x86_64表示你安装的是 64 位 x86 架构版本对应软件包后缀一般是amd64输出为aarch64则表示 ARM 64 位架构对应软件包后缀是arm64。下载二进制安装包时如果选错架构就会提示“无法执行二进制文件”。除了架构磁盘空间和内存信息也很重要df -h free -h如果/分区剩余空间太少后续安装大体积软件会失败如果内存偏小建议增加 swap 交换空间。3.4 中文输入法配置很多用户从 Windows 切到 Ubuntu 后最不习惯的就是输入法。Ubuntu 上两种常见方案是 ibus 和 fcitx5。系统默认自带 ibus但不少用户反馈 fcitx5 在 Chrome、VS Code、JetBrains 系列软件中的兼容性更好。一种比较稳妥的做法是安装fcitx5和中文输入法引擎然后切换到 fcitx5sudo apt install -y fcitx5 fcitx5-chinese-addons fcitx5-config-qt im-config im-config -n fcitx5设置完成后注销当前用户再重新登录或重启系统。重启后右上角或状态栏会出现输入法图标可以通过Ctrl Space切换中英文输入。如果你之前用过搜狗输入法 Linux 版也可以去官网下载 deb 包安装。但要注意搜狗输入法 Linux 版依赖 fcitx安装前需要先装好 fcitx而且新版搜狗输入法在不同桌面环境下的稳定性有差异。建议新手优先使用 fcitx5 系统自带拼音稳定且不折腾。配置输入法时常见的错误是安装了输入法框架和引擎但没有执行im-config -n fcitx5导致系统仍然使用默认的 ibus输入法状态栏怎么都调不出来。这一步很多人会漏掉务必检查。3.5 显卡驱动安装显卡驱动直接影响桌面流畅度和 GPU 计算能力。如果你只是用 GNOME 桌面不做深度学习、不玩游戏开源驱动可能已经够用。但如果你需要跑 PyTorch、TensorFlow、CUDA 程序或者用 GNOME 时经常卡顿、闪烁那就需要安装 NVIDIA 官方驱动。Ubuntu 提供了一个非常方便的自动安装命令sudo ubuntu-drivers list这条命令会列出当前系统推荐的可用驱动。你可以直接执行sudo ubuntu-drivers autoinstall该命令会自动安装推荐的 NVIDIA 驱动。安装完成后重启系统sudo reboot重启后验证驱动是否加载成功nvidia-smi如果能看到 N 卡型号、驱动版本和显存信息就说明驱动已经正常工作了。需要提醒的是NVIDIA 驱动安装很容易因为内核版本变化而失效。每次系统自动更新内核后建议重新执行一次nvidia-smi确认。如果失效通常需要重新安装驱动或使用 DKMS 方式管理。3.6 安装 Docker 环境Docker 是开发场景中最常用的容器工具。Ubuntu 官方源里也有docker.io包但版本往往较老。更推荐安装 Docker 官方源里的docker-ce安装方式比较统一。先安装前置依赖sudo apt update sudo apt install -y ca-certificates curl gnupg添加 Docker 的 GPG 密钥和 apt 仓库。国内用户可以使用阿里云镜像源加速sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod ar /etc/apt/keyrings/docker.gpg echo \ deb [arch$(dpkg --print-architecture) signed-by/etc/apt/keyrings/docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \ $(. /etc/os-release echo $VERSION_CODENAME) stable | \ sudo tee /etc/apt/sources.list.d/docker.list /dev/null执行完以后刷新源并安装 Dockersudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin为了免去每次执行docker命令都要加sudo可以把当前用户加入 docker 用户组sudo usermod -aG docker $USER注意加入 docker 用户组后需要重新登录或执行newgrp docker使组权限立即生效。验证 Docker 是否正常docker run hello-world如果输出Hello from Docker!说明 Docker 安装成功。国内拉取镜像较慢时可以配置镜像加速器。比如编辑/etc/docker/daemon.jsonsudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json EOF { registry-mirrors: [https://docker.m.daocloud.io] } EOF然后重启 Dockersudo systemctl daemon-reload sudo systemctl restart docker镜像加速器只是示例实际使用哪个加速地址需要根据你的网络环境来定不同地区效果差异较大。4. 完整实战案例从空白系统搭建一台开发机前面零散介绍了每个步骤的原理和命令这一节把它们串成一个完整案例。假设你刚装好 Ubuntu 22.04准备把它当成日常开发机来用。目标结果是系统软件源已切换到国内镜像apt update速度正常。常用开发工具已安装。中文输入法可正常切换。NVIDIA 显卡驱动已加载nvidia-smi能输出信息。Docker 已安装并且无需每次输入 sudo。4.1 操作流程总览整个流程可以拆成 5 步换源并更新系统。安装基础软件包。配置中文输入法并重启。安装 NVIDIA 显卡驱动。安装并验证 Docker。4.2 第一步更新源并升级系统登录 Ubuntu 后打开终端先确认当前系统版本lsb_release -a可以看到类似输出Distributor ID: Ubuntu Description: Ubuntu 22.04.4 LTS Release: 22.04 Codename: jammy然后备份源文件sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak查看源文件内容cat /etc/apt/sources.list如果内容里包含archive.ubuntu.com就执行 sed 替换。如果源文件已经是空文件或使用ubuntu.sources格式就打开对应文件手动编辑。建议直接用以下命令写入阿里云源sudo tee /etc/apt/sources.list EOF deb https://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse deb https://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse deb https://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse deb https://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse EOF注意如果你使用的是 24.04noble需要把命令中的jammy全部替换为noble。不确定代号时以cat /etc/os-release的VERSION_CODENAME为准。然后刷新索引并升级sudo apt update sudo apt upgrade -y升级过程中如果出现需要选择的提示例如配置文件冲突一般推荐保留原有配置回车即可。4.3 第二步安装常用工具系统升级完成后安装一组基础工具sudo apt install -y build-essential curl wget git vim net-tools openssh-server htop tree ca-certificates apt-transport-https安装完可以顺手启动 SSH 服务方便后续从别的电脑连进来sudo systemctl enable ssh --now验证服务状态systemctl status ssh如果看到active (running)说明 SSH 服务已经启动。接着查看架构和资源信息uname -m df -h free -h记录下这些信息后续安装软件时避免选错架构。4.4 第三步配置中文输入法安装 fcitx5 和相关组件sudo apt install -y fcitx5 fcitx5-chinese-addons fcitx5-config-qt im-config切换默认输入法框架im-config -n fcitx5注销当前用户重新登录。重启后打开系统设置找到“键盘”或“输入法”添加“拼音”输入方式。如果你找不到相关选项可以运行fcitx5-configtool在打开的图形界面中添加“Pinyin”。验证方式打开任意文本编辑器按Ctrl Space看是否能切换出中文输入模式。如果切换不了重新检查im-config -n fcitx5是否已执行以及是否重启了图形会话。4.5 第四步安装显卡驱动先用ubuntu-drivers list查看可用的驱动程序sudo ubuntu-drivers list输出中会出现多个 driver 行例如driver : nvidia-driver-535 - third-party non-free recommended执行自动安装sudo ubuntu-drivers autoinstall如果系统提示没有ubuntu-drivers先安装sudo apt install -y ubuntu-drivers-common安装结束后重启sudo reboot重启后验证nvidia-smi只要输出正常说明显卡驱动安装成功。如果提示NVIDIA-SMI has failed because it couldnt communicate with the NVIDIA driver通常是因为内核模块没有加载成功可以查看系统日志dmesg | grep -i nvidia再决定是否需要重装驱动。4.6 第五步安装 Docker 并验证依次执行以下命令sudo apt update sudo apt install -y ca-certificates curl gnupg sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod ar /etc/apt/keyrings/docker.gpg添加 Docker 源echo \ deb [arch$(dpkg --print-architecture) signed-by/etc/apt/keyrings/docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \ $(. /etc/os-release echo $VERSION_CODENAME) stable | \ sudo tee /etc/apt/sources.list.d/docker.list /dev/null安装 Dockersudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin将当前用户加入 docker 组sudo usermod -aG docker $USER newgrp docker验证 Dockerdocker version docker run hello-worlddocker version能看到客户端和服务端版本docker run hello-world会拉取一个测试镜像并输出欢迎信息。如果没有sudo也能正常执行 docker 命令说明用户组配置成功。4.7 结果说明完成以上 5 步以后你的 Ubuntu 开发机应该已经具备了日常使用的基础条件软件源速度快、常用工具齐全、中文输入正常、显卡驱动就绪、Docker 可用。这五个能力直接影响后续开发效率。如果继续搭建具体开发环境下一步可以安装 Python、Node.js、Go、Java 等运行时或者单独安装 VS Code、JetBrains 系列 IDE。本文暂时不展开后续可以根据需要单独写一篇“Ubuntu 开发环境全家桶”文章。5. 常见问题与排查思路Ubuntu 配置过程中有几个问题属于高频问题几乎每个新手都会遇到。我把它们整理成一张速查表方便你遇到时直接对照。问题现象常见原因解决思路apt update很慢或卡住默认官方源在国外网络延迟高换成国内镜像源并重新执行apt update换源后提示Failed to fetch源地址和系统版本代号不匹配用lsb_release -a查看代号换成对应版本源中文输入法调不出来安装了输入法框架但没有切换或没有重启图形会话执行im-config -n fcitx5并注销重新登录安装 NVIDIA 驱动后屏幕分辨率异常驱动未正确加载或 nouveau 开源驱动冲突重启后执行nvidia-smi查看dmesg日志docker: permission denied当前用户不在 docker 用户组执行sudo usermod -aG docker $USER并重新登录Docker 拉取镜像超时默认 Docker Hub 访问慢配置/etc/docker/daemon.json镜像加速重启 Docker执行apt命令提示Could not get lock /var/lib/dpkg/lock有另一个 apt 进程在运行等待任务完成或用 ps aux系统启动后进不了图形界面显卡驱动安装失败或内核模块冲突在 GRUB 中选择 recovery mode卸载刚安装的驱动回滚到默认驱动磁盘空间不足/分区规划太小或日志文件过大用df -h、du -sh /var/log检查清理无用包和日志软件包依赖报错本地包状态不一致尝试sudo apt --fix-broken install不要盲目卸载虚拟机内 Ubuntu 网络不通虚拟网卡未连接或网络配置未生效检查虚拟机网络模式使用ip addr查看网卡状态遇到问题时要记住一个原则先看完整报错再搜索对应的关键错误信息不要看到报错就重装系统。大部分问题都能通过日志和命令排查解决。6. 最佳实践与工程建议6.1 配置文件备份与可复现性在修改系统配置文件之前先做好备份。最简单的做法是复制一份.bak文件比如sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak但更好的做法是把自己常用的配置管理起来。在/etc/apt/sources.list.d/下创建独立文件而不是直接修改主配置文件把脚本、配置、常用安装命令放到一个 GitHub 仓库里以后在新机器上直接拉下来执行能省掉大量重复操作。比如可以创建一个install.sh脚本把常用的安装步骤按顺序写好这样就算系统出问题重装了也能快速恢复环境。6.2 权限最小化原则日常使用不要一直用 root也不要在所有命令前面都加sudo。sudo 只应该在需要修改系统级配置时使用比如安装软件、修改/etc下的配置、管理系统服务。普通操作创建项目、写代码、运行本地服务不要用 root。如果安装 Docker 这类需要高权限的应用尽量避免直接docker run -it --privileged因为 privileged 容器会失去很多 Linux 安全限制。在未知镜像面前尤其要小心。6.3 日志与排查习惯配置出现问题时先去看日志。系统日志常用命令journalctl -xe dmesg tail -f /var/log/syslog例如 Docker 起不来sudo journalctl -u docker --no-pager -n 50NVIDIA 驱动出问题dmesg | grep -i nvidia学会看日志比盲目卸载重装更高效。6.4 系统升级与内核更新的风险Ubuntu 的apt upgrade有时会把内核也升级了。如果安装了第三方内核模块最常见的就是 NVIDIA 驱动内核升级后驱动可能会失效。生产环境建议定期更新但不要在没有备份的情况下盲目升级。可以通过/etc/apt/apt.conf.d/配置锁定内核版本但这不推荐给新手。安装驱动时优先选择通过ubuntu-drivers autoinstall安装的版本这类驱动通常支持 DKMS 自动重建模块。6.5 性能与磁盘规划如果你计划长期使用 Ubuntu安装系统时分区就值得提前规划。推荐/根分区至少 50GB如果装 Docker 镜像和开发环境建议 100GB。/home单独分区方便重装系统时保留个人数据。swap 根据内存大小设置。内存 16GB 以下建议设置 4-8GB16GB 以上可以不设置也可以设置 4GB 备用。安装软件时注意磁盘占用尤其是 Docker 镜像和日志文件。定期使用以下命令清理无用镜像和容器docker system prune这条命令会清理停止的容器、未使用的网络、悬空的镜像和构建缓存执行前可以先看一遍docker system df了解磁盘占用情况。6.6 写代码与开发环境的工程化建议只要你把 Ubuntu 当作开发机就应该尽早建立良好的工程习惯使用 SSH 密钥登录远程服务器而不是密码登录。用git管理项目目录每个项目有独立的.gitignore。不要随意修改系统 Python 环境优先使用venv或conda。使用systemd管理常驻服务比如后端接口服务、定时任务等。把常用工具命令整理成Makefile或 shell 脚本方便重复执行。这些习惯可能一开始看不出差距但当你管理多台机器、重装系统、部署服务时会节省大量时间。7. 总结与下一步学习路线回到标题的问题给 Ubuntu 换壁纸的劲头是不是用错地方了我的看法是美化没有错但如果只在壁纸上下功夫忽略系统配置、驱动和开发环境那才是真的错。这篇文章从 Ubuntu 新装系统后的第一件正事讲起覆盖了换源、系统更新、基础工具安装、中文输入法、显卡驱动、Docker 安装并串联成一个完整的开发机搭建案例。不要小看这几个步骤它们决定了你后续使用 Ubuntu 的体验下限。壁纸再好看也不能替你解决apt install超时、输入法切不出来、容器权限报错这些问题。如果你能顺利走到这里下一步建议按这个路线继续深入学习 Linux 文件权限和用户管理知道chmod、chown、umask的含义。学习 systemd 的基本用法会用systemctl管理服务。学习 shell 脚本基础把重复操作写成脚本。学习 Docker 基本用法写出自己的 Dockerfile。再往后可以尝试用 Ubuntu 作为家庭服务器部署自己的 Web 应用、数据库和 CI 工具。从换壁纸到搭环境这中间的差距其实就是习惯的差距。建议你按照第 4 节的流程亲手做一遍遇到问题再回来看第 5 节的排查表。实践一次之后你会发现 Ubuntu 其实并不难真正难的是不知道从哪里开始。如果本文对你有一点点帮助可以收藏备用。你有想了解的 Ubuntu 配置细节也可以在评论区留言我后续按需求继续写兄弟们最关心话题的教程。
返回列表