程序员换装Linux Pop OS 21.10系统安装配置与使用心得分享
说真的,第一次把 Windows 上的双系统删掉、只留 Pop!_OS 的时候,我心里是虚的。毕竟代码要跑、会议要开、某些甲方给的 .NET 老项目还得在 Windows 上调试,突然把主力机换成 Linux,听起来像“裸奔上高原”。但折腾了半个月之后,我发现这台机器反而更安静、更听话了。下面把我从装系统到日常开发踩过的坑、配好的环境、以及真正用起来之后的感受,原原本本写下来。不灌鸡汤,只讲实操。
为什么最后没选 Arch,也没选 Ubuntu 原版
很多程序员换 Linux 的第一反应是 Ubuntu。稳定、教程多、社区大。但 Ubuntu 默认的桌面体验对开发者来说稍微“重”了一点,而且 Snap 默认开启,装个 VS Code 或 Discord 经常卡在半自动依赖下载上。Pop!_OS 是 System76 团队基于 Ubuntu 做的发行版,它保留了 Ubuntu 的软件源和 .deb 生态,但在桌面上做了几件程序员很买账的事:
- 自带 COSMIC 桌面微调,窗口管理比原生 GNOME 顺手
- 官方提供 NVIDIA 独立镜像,显卡驱动不用自己折腾
- 内置 Flatpak 支持,软件安装逻辑清晰
- 默认关闭 Snap,避免依赖冲突
- 对游戏本、外接显示器、休眠唤醒的适配比纯 Ubuntu 更积极
21.10 这个版本基于 Ubuntu Hirsute Hippo,GNOME 40 配合 COSMIC 补丁,整体手感介于“现代”和“克制”之间。如果你不想每天跟配置文件较劲,又想保留 Linux 的自由度,它是个很合适的起点。
提醒一句:Pop!_OS 21.10 已经于 2022 年 7 月停止官方维护。如果你现在装机,建议直接看 22.04 LTS 或更新的 24.04。但 21.10 的安装逻辑、驱动选择、开发环境搭建思路基本通用,这篇心得依然有参考价值。
装系统前的准备:别急着刻 U 盘
很多人卡在第一步,其实不是系统难装,而是准备环节没想清楚。
1. 确认 BIOS/UEFI 设置
重启电脑,进 BIOS(通常是 F2、Del 或 F12,看主板品牌)。重点改这三项:
| 选项 | 建议值 | 原因 |
|---|---|---|
| Secure Boot | Disabled 或保留但选 Enroll MOK |
Pop 默认镜像签名完整,但部分 OEM 厂商的 Shim 会报错 |
| SATA Mode | AHCI |
别用 RAID/RST,否则安装器认不到硬盘 |
| Fast Boot | Disabled |
防止开机直接跳过 U 盘启动项 |
2. 下载镜像与校验
去 Pop!_OS 官网下载。如果你用 NVIDIA 显卡,一定选带 nvidia 后缀的 ISO,里面已经预装了闭源驱动,省得装完系统还要手动 apt install 一堆东西。
下载后用 sha256sum 校验一下:
sha256sum pop-os_21.10_amd64_nvidia.iso
# 对比官网提供的哈希值,差一个字符都不能用
3. 刻录 U 盘
Windows 上用 Rufus 或 Ventoy。推荐 Ventoy,一个 U 盘塞多个 ISO,切换启动项就像插拔硬盘一样方便。
macOS 用户直接用终端:
# 先确认 U 盘设备名,别刷错盘!
diskutil list
# 假设 U 盘是 /dev/disk2,卸载并写入
diskutil unmountDisk /dev/disk2
sudo dd bs=4m if=pop-os_21.10_amd64_nvidia.iso of=/dev/rdisk2 conv=sync
分区方案:双系统还是全替换?
这是最容易被新手搞晕的地方。我分两种情况说。
方案 A:保留 Windows,做双系统
适合还在用 Windows 跑特定软件的人。关键点:不要在 Windows 的 C 盘里硬塞 Linux,而是用磁盘管理压缩出一段未分配空间。
推荐分区结构:
/dev/nvme0n1p1 EFI 512MB FAT32 (共用,别动)
/dev/nvme0n1p2 Windows 原有 NTFS (别动)
/dev/nvme0n1p3 / 40~60GB ext4 (留给系统+软件)
/dev/nvme0n1p4 /home 剩余 ext4 (个人数据)
/dev/nvme0n1p5 swap 8~16GB linux-swap
如果内存 ≥ 32GB 且你不用休眠,swap 可以做成文件而不是分区:
sudo fallocate -l 8G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
教小朋友也能听懂的话:硬盘就像一个大书架。Windows 占了左边几层,你把右边空出来,Linux 住进去。EFI 是“总开关”,两家人共用,谁也不能拆。
安装器选择 “Replace existing partition” 或 “Custom storage layout” 都行。注意把 /boot/efi 指向已有的 EFI 分区,不要新建,否则 Windows 引导会被覆盖,开机直接进 GRUB 黑屏。
方案 B:彻底换 Linux
如果你的工作流不依赖 Windows 独占软件,直接全删最干净。安装器选 “Erase disk and install Pop!_OS”,它会自动帮你分好区,NVMe 硬盘默认用 ext4 或 btrfs,性能足够。
装完后第一次重启,拔掉 U 盘。如果屏幕黑了但风扇在转,等 30 秒通常会自动进桌面。
第一次开机:别急着装软件,先做这几件事
新系统刚装好,默认环境是“能用”,但离“顺手”还差几步。
1. 更新源与基础工具
sudo apt update && sudo apt full-upgrade -y
sudo apt install build-essential git curl wget htop tmux zsh -y
build-essential 包含 GCC、G++、Make,写 C/C++ 或编译第三方库必备。tmux 是终端多会话神器,SSH 断线也不怕任务挂掉。
2. 中文字体与显示优化
Linux 默认字体对中文支持一般,尤其是小字号下发虚。装一套完整的字体:
sudo apt install fonts-noto-cjk fonts-wqy-zenhei fonts-liberation -y
fc-cache -fv
然后在 设置 → 外观 里把字体渲染调到 “Slight” 或 “Medium”,字号 10~11pt 对程序员眼睛更友好。
3. 换 Zsh + Oh My Zsh + 主题
Pop 21.10 默认已经是 Zsh,但我们可以让它更好看、更好用:
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
git clone https://github.com/romkatv/powerlevel10k.git ~/.oh-my-zsh/custom/themes/powerlevel10k
echo 'ZSH_THEME="powerlevel10k/powerlevel10k"' >> ~/.zshrc
source ~/.zshrc
p10k configure
按提示走一遍配置向导,终端立刻有 Git 状态、执行时间、命令建议。
4. NVIDIA 驱动确认
如果你装的是 NVIDIA 版 ISO,驱动应该已经就绪:
nvidia-smi
# 应该能看到显卡型号、驱动版本、CUDA 版本
如果没反应,手动补装:
sudo apt install pop-nvidia-kernel-510 pop-nvidia-settings -y
sudo reboot
注意:21.10 默认搭配的是 510 系列驱动。如果内核升级后
nvidia-smi报错,大概率是 DKMS 模块没编译成功,运行sudo dkms autoinstall再重启即可。
程序员开发环境:从零搭到能跑项目
这部分是核心。我把日常写代码必须用到的东西列出来,命令可以直接复制。
1. Node.js / Python / Go / Rust 怎么选装
别用 apt install nodejs 装开发版,版本太旧且没有多版本切换。用官方管理器:
Node.js(nvm)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
source ~/.bashrc
nvm install --lts
nvm use --lts
node -v
npm -v
Python(pyenv)
sudo apt install -y make build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
curl https://pyenv.run | bash
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo '[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
source ~/.zshrc
pyenv install 3.11.4
pyenv global 3.11.4
python3 -m venv ~/projects/.venv
source ~/projects/.venv/bin/activate
Go
wget https://go.dev/dl/go1.19.3.linux-amd64.tar.gz
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf go1.19.3.linux-amd64.tar.gz
echo 'export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin' >> ~/.zshrc
source ~/.zshrc
go version
Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env
rustc --version
2. Docker:Linux 上的天然优势
Windows 上跑 Docker 要 WSL2 中转,性能损耗明显。Linux 原生支持 cgroup + namespace,Docker 直接跑:
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
newgrp docker
docker run hello-world
验证容器网络:
docker network ls
docker ps -a
真实体验:同一个微服务项目,Windows 上构建一次要 4 分钟,Pop 上 1 分半。不是玄学,是文件系统和本地调度器在 Linux 上更直接。
3. IDE 与编辑器
VS Code
code --install-extension ms-python.python
code --install-extension golang.go
code --install-extension dbaeumer.vscode-eslint
code --install-extension rust-lang.rust-analyzer
JetBrains 全家桶 推荐用官方 Toolbox App,比直接下 .tar.gz 省心:
wget https://download.jetbrains.com/toolbox/jetbrains-toolbox-1.27.0.13599.tar.gz
tar -xzf jetbrains-toolbox-*.tar.gz
./jetbrains-toolbox-*/JetBrains\ Toolbox.app/Contents/MacOS/jetbrains-toolbox
登录后直接点 “Install”,它会自动处理更新、版本切换、插件同步。
4. 终端里的效率神器
# 模糊搜索命令
sudo apt install fzf -y
fzf --bind 'ctrl-space:select-all'
# 智能跳转目录
sudo apt install z -y
# 在 .zshrc 加一行
echo 'source <(zoxide init zsh)' >> ~/.zshrc
zoxide init zsh --cmd cd | source /dev/stdin
z foo # 跳到包含 foo 的目录
# 终端截图/录制
sudo apt install asciinema termpal -y
asciinema rec demo.cast
日常使用里那些让人哭笑不得的细节
系统能跑不代表好用。下面这些是我实际踩过的坑,写出来能帮你省几个小时。
1. 休眠与合盖行为
Pop 默认对笔记本的电源管理做得不错,但有些机型合盖后会唤醒失败。解决方式:
sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
# 如果你只想禁用合盖休眠,保留手动休眠
sudo vim /etc/systemd/logind.conf
# 修改:HandleLidSwitch=suspend-then-hibernate
sudo systemctl restart systemd-logind
2. 外接显示器花屏/不识别
GNOME 在 Wayland 下对部分 NVIDIA 老卡支持一般。21.10 默认是 X11,但如果遇到闪烁:
- 登录界面右下角齿轮,选 “Pop on Xorg”
- 或者全局切换:
sudo sed -i 's/^WAYLAND_ENABLED=.*/WAYLAND_ENABLED=false/' /etc/gdm3/custom.conf
sudo systemctl restart gdm3
3. 蓝牙鼠标/耳机连接慢
sudo apt install bluez bluez-tools -y
bluetoothctl
# 进入交互模式后:
power on
agent on
default-agent
scan on
pair XX:XX:XX:XX:XX:XX
trust XX:XX:XX:XX:XX:XX
connect XX:XX:XX:XX:XX:XX
如果频繁断连,更新蓝牙固件:
sudo fwupd refresh
sudo fwupd update
4. 输入法:中文用户必配
Pop 默认用 IBus。装搜狗或 fcitx 都可以,但 fcitx5 更轻、对 Qt/GTK 兼容更好:
sudo apt install fcitx5 fcitx5-chinese-addons fcitx5-frontend-gtk3 fcitx5-frontend-qt5 -y
im-config -n fcitx5
# 注销重新登录
fcitx5-configtool
在配置界面把 “拼音” 拖到第一位,设置快捷键 Ctrl+Space 切换。
说实话,它并不完美
作为长期使用者,我得把缺点也摊开说。不然显得像软文。
- 21.10 已停更:安全补丁不再发放。如果拿来做生产服务器或日常主力机,强烈建议升级到 LTS。
- 部分硬件兼容性看运气:新款 Intel 12⁄13 代混合架构的 CPU 调度,在 5.13⁄5.15 内核下偶尔出现单核满载。换用
linux-generic-hwe-22.04或主线内核能改善。 - Flatpak 软件更新偶尔抽风:
.flatpak缓存吃磁盘,定期清理:
flatpak uninstall --unused
rm -rf ~/.local/share/flatpak/refs/thumbnails/*
- 某些企业软件没有 Linux 版:Teams、部分银行 U 盾、老旧 .NET Framework 程序。这类场景双系统或虚拟机兜底更稳。
- 桌面环境更新节奏偏保守:COSMIC 在 21.10 还算成熟,但功能迭代不如 KDE Plasma 激进。
给想换系统的你一点建议
如果你还在 Windows 上写着同样的代码、跑着同样的服务,换 Linux 不会让你的技术突然变强。但它会给你几样东西:
- 更透明的系统掌控感:日志在哪、进程怎么调度、网络怎么路由,全部可见可改。
- 更接近生产环境的本地体验:服务器大多是 Linux,本地开发环境与线上差异越小,部署翻车概率越低。
- 更少的后台干扰:没有自动更新弹窗、没有遥测服务、没有强制重启。
操作建议:
- 先用 Live USB 跑一天,测试 WiFi、蓝牙、外接屏、摄像头是否正常
- 重要数据备份到移动硬盘或 NAS,别信“压缩空间够用”
- 双系统阶段保留 Windows 引导,卸载时先删 Linux 分区,再用
bcdedit清理残留启动项 - 开发环境用脚本管理,别手动一个个装。我后来把所有配置写成
setup.sh,重装系统 20 分钟恢复如初:
#!/bin/bash
# 一键开发环境初始化示例
set -e
sudo apt update && sudo apt upgrade -y
sudo apt install -y build-essential git curl wget htop tmux zsh \
fonts-noto-cjk fcitx5 fcitx5-chinese-addons docker.io
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
echo 'Done. Reboot recommended.'
换系统这件事,本质上是在和“习惯”谈判。前两周你会怀念右键菜单、怀念某些软件的熟悉布局、怀念 Windows 上双击就能跑的 .exe。但当你发现终端里一条 docker compose up -d 就能拉起整个微服务,当你发现 htop 里每个线程都乖乖待在该待的位置,当你发现这台机器终于只为你工作、不为广告和遥测工作——那种感觉,挺踏实的。
Pop!_OS 21.10 不是终点,但它是一个很好的起点。装好它,配好环境,写你的代码。剩下的,交给时间。