装 Ubuntu 这件事,我前前后后干过不下三十次,从 12.04 一路装到 24.04,踩过的坑基本能串成一部血泪史。很多人一听到“安装 ubuntu 操作系统”就紧张,觉得要跟分区表、引导程序、显卡驱动这些名词硬碰硬,其实真正的难点不在操作本身,而在于装之前没想清楚“我到底要装成什么样”。你是要一台干净的单系统开发机,还是想在 Windows 旁边再挤进去一个双系统,或者只是想在虚拟机里先玩玩、不想动现有硬盘一根汗毛——这三个选择的准备工作、风险等级和后续维护成本完全不一样。这篇东西我按真实动手顺序写,从选版本、做启动盘、分区计算,到装完之后的输入法和环境变量收尾,把每一步“为什么这么做”讲透,也会把那些官方文档不写、但实际会把人卡住半小时的细节挖出来。适合完全没装过 Linux 的新手照着走,也适合装过几次但总在某一步翻车的老手对照排查。

1. 装之前先想明白:需求拆解与方案选型

1.1 三种安装形态,风险差别很大

物理机单系统 是最干脆的路子,整块硬盘交给 Ubuntu,没有引导冲突,性能也是满血的,缺点是原来的 Windows 和数据要么迁走要么删掉。适合手里有闲置机器、或者主力机器已经完成了数据迁移的人。我一般推荐第一次装 Ubuntu 的朋友拿旧笔记本或备用台式机练手,装坏了最多重来,心理压力小很多。

双系统 是在保留原有 Windows 的前提下,从空闲空间里划一块给 Ubuntu。听起来很美,但它是三种方案里翻车率最高的:Windows 的快速启动(Fast Startup)和休眠会锁住硬盘,导致安装程序看不到 Windows 分区;引导顺序被 Windows 更新覆盖也不是新鲜事。我个人的经验是,双系统必须做两件事——先在 Windows 里关掉快速启动和 BitLocker,再用 Windows 自带的磁盘管理压缩出足够的未分配空间,不要在 Ubuntu 安装器里当场压缩 Windows 分区,那个操作慢且容易出意外。

虚拟机安装 是零风险方案,VMware Workstation Player 或者 VirtualBox 都行,创建虚拟机时给 4 核 CPU、8GB 内存、60GB 硬盘起步,VT-x/AMD-V 虚拟化要在 BIOS 里打开。性能有折扣但足够学命令行、跑 Docker、写 Python。VMware 装 Ubuntu 有个经典小坑:默认的“简易安装”会偷偷帮你做很多决定,建议选“稍后安装操作系统”,全程手动走一遍,你才能知道自己到底改了什么。

提示:如果只是想在 Windows 上写代码、用 Linux 工具链,其实还有一个更轻的选择——WSL2。 wsl --install -d Ubuntu-24.04 一条命令搞定,不用分区不用重启,缺点是跟硬件贴得不紧,玩驱动、玩桌面环境就不合适了。

1.2 版本怎么挑:LTS 是底线,别贪新

Ubuntu 的版本号是“年份.月份”的格式,24.04 就是 2024 年 4 月发布的。带 LTS (Long Term Support)后缀的是长期支持版,桌面版有 3 年官方支持,服务器版 5 年,还能通过 ESM 延长。非 LTS 版本只维护 9 个月,等你刚把环境配顺,它就停止更新了,升级还得再来一轮。所以选版本的原则很简单: 优先最新的 LTS 。

目前实际在用的几个:24.04 LTS 代号 Noble Numbat,内核 6.8,对新硬件支持最好;22.04 LTS 是老牌稳定选择,很多企业环境和教程还停在这里;20.04.6 LTS 属于上个周期的产物,除非你的软件明确要求,否则没必要再用。

桌面版(Desktop)和服务器版(Server)的区别在于前者自带 GNOME 图形界面和一堆日常软件,后者是纯命令行的最小化安装。有意思的是,安装完之后两者可以互相转换——桌面版能装 ubuntu-server 元包变服务器,服务器版也能装 ubuntu-desktop-minimal 再装上图形界面,所以这个选择并不致命。

1.3 硬件门槛与固件模式确认

Ubuntu 24.04 桌面版官方给的最低要求是 4GB 内存、25GB 硬盘、2GHz 双核处理器,但这只是“能开机”。真要跑浏览器加 IDE 加 Docker,我的建议是 8GB 内存起步、SSD 至少 100GB,16GB 内存会让整个体验舒服太多。内存低于 8GB 的机器,GNOME 桌面会明显卡顿,可以考虑 Lubuntu 或 Xubuntu 这类轻量衍生版。

另一个必须提前确认的是固件模式: UEFI 还是 Legacy BIOS 。2012 年以后的主机基本都是 UEFI,安装 U 盘和硬盘分区表都要对应上。如果你在 UEFI 机器上用了 MBR 分区表,或者 U 盘按 Legacy 方式制作,最典型的现象就是开机进不去安装界面、直接跳回原系统。开机时按 F2/Del/F12(品牌不同按键不同)进固件设置,看有没有 “UEFI Boot” 相关选项,基本就能判断。

2. 准备工作:镜像、启动盘与分区规划

2.1 镜像下载与完整性校验

镜像从官方渠道拿,别图省事从某个网盘拖一个来路不明的 ISO。下载页面上除了 ISO 本体,还会有一个 SHA256SUMS 文件,里面是所有镜像的哈希值。校验这件事很多人跳过,但它是唯一能确认文件没在传输中损坏的手段——我曾经因为一个坏掉的 ISO 卡在“无法挂载安装介质”上折腾了一晚上,从那以后再没跳过这步。

# 校验单个镜像(在 ISO 所在目录执行)
sha256sum ubuntu-24.04.1-desktop-amd64.iso

# 或者下载 SHA256SUMS 和它的签名文件后一键比对
sha256sum -c SHA256SUMS 2>&1 | grep OK

比对结果一致就行。如果不一致,重新下载,别抱侥幸心理。另外 24.04 之后官方提供了 .torrent 种子,网络条件一般的时候用 BT 拉反而更稳,因为分块校验是种子协议自带的。

2.2 启动盘制作:工具选型与关键参数

Windows 下我用得最多的是 Rufus ,轻量、免安装、写盘速度快。打开之后有三个地方要注意:设备选对 U 盘(容量至少 8GB,制作过程会全盘清空);分区类型选 GPT 、目标系统选 UEFI(非 CSM) ,这跟现代主机的固件模式匹配;文件系统默认 FAT32 就行。

跨平台一点的选 balenaEtcher ,界面极简,选镜像、选盘、点 Flash,三下完事,缺点是速度稍慢且不能调参数。Linux 用户或者喜欢命令行的话, dd 最直接:

# 先确认 U 盘设备名,一定要认准,写错盘等于直接抹掉数据
lsblk -o NAME,SIZE,MODEL,TRAN

# 假设 U 盘是 /dev/sdb,用 of= 指定,status=progress 能看到进度
sudo dd if=ubuntu-24.04.1-desktop-amd64.iso of=/dev/sdb bs=8M status=progress oflag=sync

注意: dd 的 of= 后面是设备整盘( /dev/sdb ),不是分区( /dev/sdb1 )。这个参数写错,写多快你的数据就丢多快,没有撤销。执行前用 lsblk 反复确认三遍。

2.3 分区方案的数量计算

分区是新手最犯怵的一环,其实只要理解每个分区的职责,数字是可以推出来的。UEFI 系统下推荐这么规划:

挂载点 建议大小 文件系统 作用与理由
/boot/efi 512MB~1GB FAT32 存放引导程序,UEFI 强制要求,太小会无法安装新内核
/(根) 60~100GB ext4 或 btrfs 系统和软件都在这,给少了以后清理麻烦
swap 内存 ≤8GB 给 2~4GB,更大内存给 8GB swap 休眠需要大于内存,日常使用当缓冲
/home 剩余全部 ext4 个人数据独立,重装系统时不格式化即可保留

/boot/efi 给 512MB 是底线,我见过给 100MB 然后每次内核更新都报错的情况,因为旧的引导文件塞不下新的。swap 的大小在“不用休眠”的前提下,8GB 内存的机器给 2~4GB 完全够,现代系统对 swap 的依赖比十年前小得多,用 swapfile 代替独立分区也是主流做法。

如果整块盘都给 Ubuntu,最简单的做法是安装时选“清除整个磁盘”,让安装器自动分区。想保留 /home 以便将来重装,就必须选“手动分区”(Manual partitioning),自己挂载。双系统的话提前在 Windows 里压缩出一块未分配空间,容量按刚才那张表加起来算,留出 20% 余量比较保险。

3. 实操全过程:从固件设置到首次开机

3.1 引导设置与安装器启动

插上 U 盘,重启时按启动菜单键(华硕 F8、戴尔 F12、联想 F12、惠普 F9,具体看开机画面提示),在列表里找到带 “UEFI:” 前缀的那个 U 盘条目,选它。如果只看到不带 UEFI 的条目,说明 U 盘是按 Legacy 方式制作的,或者主板的 CSM 兼容模式开着,两个方案都不太建议在 UEFI 机器上走。

进到 GRUB 菜单后,默认选 “Try or Install Ubuntu” 回车就行。 这里有个新手常犯的错 :看到黑屏就以为安装介质坏了,其实很多时候是显卡驱动问题,需要在内核参数里加 nomodeset 。操作方法是停在 GRUB 菜单时按 e 编辑启动项,在 linux 那一行末尾加一个空格再加 nomodeset ,按 F10 引导。进了系统之后再装正确的显卡驱动,重启后就不需要这个参数了。

另一个高频拦路虎是硬盘识别不到。如果安装向导走到分区那一步发现列表是空的,或者提示“没有检测到磁盘”,八成是 BIOS 里的 Intel RST / Optane 模式 没关。这个模式本来是给 Windows 做磁盘加速用的,Linux 内核不认识,必须在固件设置里把 SATA 模式改成 AHCI。改之前记得先在 Windows 里安全模式切一次,否则改完 Windows 可能直接蓝屏。

3.2 安装向导逐屏拆解

进入图形界面后,前面的语言、键盘布局、网络连接几屏都好办,网络建议连上,安装器会在过程中顺便下载语言包和显卡驱动,省得装完再折腾。 “安装类型”这一屏才是真正的分水岭 ,三个选项的含义:

  • 清除整个磁盘并安装 Ubuntu :自动分区,最快,代价是整盘数据全没。适合空盘或已备份的机器。
  • 安装 Ubuntu,与其它系统共存 :只对 Windows 的 NTFS 分区做收缩,风险中等,Windows 更新后引导被覆盖的概率不低。
  • 手动分区 :完全自己控制,双系统和保留 /home 的重装场景必须用这个。

手动分区界面里,先选中那块空闲空间,点“+”号逐个创建。创建顺序无所谓,但要记得每建一个就把它挂到对应位置。装 /boot/efi 的时候,“用于”选 EFI 系统分区,不要手动格式化已有的 EFI 分区——如果这台机器上有 Windows,它的引导文件就在里面,格了 Windows 就起不来了。这是个非常经典的致命操作。

提示:创建 /boot/efi 时如果看到已有的 EFI 分区,正确做法是选中它、点“更改”、把挂载点设为 /boot/efi ,并且 不勾选格式化 。同理,双系统下 /home 想保留旧数据也不勾格式化。

3.3 用户名、时区与密码设置

用户名建议全小写,别带中文和空格,因为这个名字会成为 /home/ 下的目录名,也是终端里 @ 前面那一段。带中文的用户名在 SSH、Docker 挂载和一堆开发工具里都会出幺蛾子,我见过同事因为用户名是中文,VSCode Remote 怎么都连不上。

计算机名(hostname)也一样,用短横线或直接连写,比如 dev-ubuntu 或 workstation 。时区在中文环境下会自动识别成 Asia/Shanghai,确认一下就行。密码这里有个细节:登录密码可以短,但如果要开 sudo 免密或者做服务器使用,建议设长一点,因为 Ubuntu 默认禁止 root 直接登录,所有提权都走 sudo ,这个密码就是你的最后一道防线。

安装过程大概 10 到 20 分钟,SSD 上更快。到最后会提示重启, 重启前一定要拔掉 U 盘 ,否则又会从 U 盘启动,进到安装器里让人误以为装失败了。

3.4 首次开机后的收尾配置

第一次进桌面,先做三件事:更新软件源索引、升级已装软件、装上必要工具。

# 更新索引并升级
sudo apt update
sudo apt full-upgrade -y

# 常用工具一把梭
sudo apt install -y build-essential git curl wget vim htop net-tools

服务器版或者要用 SSH 远程连的机器,还得装上 SSH 服务并放行防火墙:

sudo apt install -y openssh-server
sudo systemctl enable --now ssh
sudo systemctl status ssh

sudo ufw allow OpenSSH
sudo ufw enable

systemctl enable --now 这个组合比分开执行 start 加 enable 省事, --now 表示立即启动, enable 表示开机自启,两件事一次做完。装完 ufw 之后立刻放行 SSH 再启用防火墙,顺序别反了,反了自己就把自己挡在门外了。

4. 装完不算完:中文环境与开发工具链

4.1 中文输入法配置的完整链路

Ubuntu 装完默认只有英文输入。中文输入法因为涉及输入法框架和引擎两层,是重装后最容易卡住的地方。现在的标准组合是 fcitx5 + 拼音引擎 ,比老的 ibus 兼容性和词库都好。

sudo apt install -y fcitx5 fcitx5-chinese-addons fcitx5-frontend-gtk3 fcitx5-frontend-qt5

装完之后要设置环境变量,告诉系统用哪个输入法框架。这一步是很多人漏掉的,装完引擎但输入法列表里啥都没有,通常就是这里没配。

# 写入当前用户的环境配置
cat >> ~/.profile << 'EOF'
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
EOF

# 让 fcitx5 开机自启
cp /usr/share/applications/fcitx5.desktop ~/.config/autostart/ 2>/dev/null || mkdir -p ~/.config/autostart

注销重新登录(或者重启)之后,任务栏会出现输入法图标,右键进配置,把“拼音”加进输入法列表,用 Ctrl + 空格 切换中英文。Wayland 会话下如果图标不显示,可以在登录界面右下角切换到 “Ubuntu on Xorg” 会话试试,兼容性更稳。

注意: ~/.profile 里的环境变量只对图形会话和登录 shell 生效,如果你是用 ssh 进去的,得写到 ~/.bashrc 或者 ~/.zshrc 。我遇到过在终端里输不出中文的情况,就是搞混了这两个文件的生效范围。

4.2 显卡驱动与硬件适配

NVIDIA 显卡在 Ubuntu 上要单独处理,开源驱动 nouveau 性能差,而且在新卡上经常黑屏。Ubuntu 提供了一个便捷工具 ubuntu-drivers ,能自动识别推荐版本。

# 先看设备推荐了哪些驱动
ubuntu-drivers devices

# 一键安装推荐版本
sudo ubuntu-drivers autoinstall

# 或者指定版本,比如 550 系列
sudo apt install -y nvidia-driver-550

装完重启, nvidia-smi 能输出显卡信息就说明成功了。 Secure Boot 开着的时候,第三方内核模块需要签名 ,安装过程会弹出一个蓝底白字的界面让你设置 MOK 密码,重启时还要在同样的界面里输入一遍那个密码完成注册。很多人看到这个界面以为是系统崩了直接强制关机,结果驱动没装上,还以为是驱动包的问题。

4.3 环境变量的三类坑

环境变量是 Ubuntu 新手最容易自己搞坏系统的地方。写错一个 PATH 的引号,整个终端命令都可能找不到,严重的时候图形界面都进不去。所以先搞清楚改哪个文件:

文件 生效范围 典型用途
/etc/environment 全局,所有用户 系统级 PATH 补充,格式是 KEY=value ,不能写 export
/etc/profile.d/*.sh 全局,登录 shell 团队统一环境,脚本形式,可写 export
~/.profile 当前用户,登录会话 图形界面和桌面应用的环境变量
~/.bashrc 当前用户,交互式 shell 别名、命令提示符、终端专用变量

最常见的翻车方式是在 /etc/environment 里写了 export PATH=$PATH:/opt/xxx ,这个文件不是 shell 脚本, export 和 $PATH 都不会被展开,结果 PATH 被替换成一个字面量,所有命令都找不到了。真遇到这种情况,可以用 Alt+F3 进 TTY,用绝对路径 /usr/bin/vi /etc/environment 改回来。 改这类文件之前,先 cp /etc/environment /etc/environment.bak ,这个习惯救过我至少两次。

5. 常见问题与排查技巧实录

5.1 安装阶段卡住怎么办

现象 大概率原因 处理办法
开机不进安装界面,回原系统 启动项选错或 U 盘制作模式不对 启动菜单里选带 UEFI 前缀的条目,重做 U 盘用 GPT+UEFI
GRUB 后黑屏 显卡驱动冲突 编辑启动项加 nomodeset ,进系统后再装驱动
分区界面看不到硬盘 BIOS 里 Intel RST 开着 固件设置里改成 AHCI 模式
卡在“探测文件系统” 硬盘有坏道或分区表异常 用 Live 环境跑 sudo fsck -f /dev/sdaX 检查
安装到最后报 grub-install 失败 EFI 分区挂载错误或空间不足 检查 /boot/efi 是否指向已有 EFI 分区、容量是否 ≥512MB

这张表是我这些年遇到频率最高的五种情况,覆盖了大概八成的安装失败。补充一条:如果安装过程中断电或者强制关机,重新引导进 Live 环境,先别急着重装,用 sudo parted -l 看看分区表有没有写成半截状态,必要时用 parted 重新建立 GPT 标签再装。

5.2 双系统的两个经典后遗症

时间错乱 排第一。Windows 把硬件时钟当作本地时间,Linux 默认当作 UTC,两边来回切就会出现差 8 小时的情况。解决方法二选一:让 Linux 迁就 Windows,执行 timedatectl set-local-rtc 1 ;或者让 Windows 迁就 Linux,在 Windows 里改注册表把硬件时钟当 UTC。我一般选后者,因为 UTC 是更规范的做法,具体是在 Windows 的注册表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation 下新建一个名为 RealTimeIsUniversal 的 DWORD 值,设为 1。

引导被覆盖 排第二。Windows 的大版本更新有时候会重写引导顺序,开机直接进 Windows 不见 GRUB。修复方法是进 Live 环境,挂载根分区后 chroot 进去重新装 GRUB:

sudo mount /dev/sda2 /mnt            # 挂根分区
sudo mount /dev/sda1 /mnt/boot/efi   # 挂 EFI 分区
for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done
sudo chroot /mnt
grub-install /dev/sda
update-grub
exit
sudo reboot

如果嫌命令行麻烦, boot-repair 这个工具能图形化一键修复, sudo add-apt-repository ppa:yannubuntu/boot-repair && sudo apt install boot-repair 装上,选“推荐修复”基本能解决。我个人还是倾向手动 chroot,因为能看清每一步到底动了什么。

5.3 装完连不上的网络与 SSH 问题

ssh 连不上是最常见的一类求助,按顺序排查四件事:服务有没有起、端口有没有被防火墙挡、监听地址是不是只有本地、网络本身通不通。

# 服务状态
systemctl status ssh

# 实际监听端口和地址,看到 0.0.0.0:22 才说明对外可连
ss -tlnp | grep :22

# 防火墙规则
sudo ufw status verbose

# 从另一台机器测端口连通性
nc -vz 192.168.1.100 22

如果 ss 显示的是 127.0.0.1:22 ,说明只监听了本地回环,需要改 /etc/ssh/sshd_config 里的 ListenAddress 。如果 ufw status 里没有 OpenSSH 那条规则, sudo ufw allow OpenSSH 补上。还有一种情况是路由器做了客户端隔离,局域网内互相 ping 得通但端口不通,这个只能去路由器管理页面关掉 AP 隔离。 别轻易用 sudo ufw disable 来“验证”问题 ,关防火墙能连上只能说明是规则问题,不是解决方案,而且会留下安全隐患。

6. 重装与数据保留的一点经验

重装 Ubuntu 是每个折腾党都会经历的事,我大概每一年半会重装一次。 只要 /home 是独立分区,重装时在手动分区界面把 /home 挂上去、不勾格式化,个人数据、配置文件、浏览器书签全都原样回来 ,只有系统软件和依赖需要重装一遍。这也是我从第二次装系统开始就坚持把 /home 独立出来的原因。

装之前我会习惯性导出一份软件清单,重装后照着装,比凭记忆一个个想快得多:

# 导出当前手动安装的软件包名
comm -23 <(apt-mark showmanual | sort) <(gzip -dc /var/log/installer/initial-status.gz | sed -n 's/^Package: //p' | sort) > pkglist.txt

# 新系统里批量恢复
xargs -a pkglist.txt sudo apt install -y

这个命令的逻辑是:拿当前所有手动标记的包,减去安装器初始带的那批,剩下的就是你自己后来装的。第一次看到这个技巧的时候我拍了下大腿,之前重装一次要回忆半天自己装了哪些工具。

/etc 下有些配置也值得备份,比如 /etc/fstab 、 /etc/apt/sources.list.d/ 里的镜像源配置、 /etc/hosts 。我通常把这些放在一个 git 仓库里管理,每次改完 git commit 一下,重装后 git clone 回来就行,比 U 盘拷来拷去靠谱。至于显卡驱动、Docker、CUDA 这些重活儿,重装后按前面的顺序再来一遍,熟练的话一个小时能全部搞定。

最后说一个容易忽略但很影响体验的点:字体。默认的 Ubuntu 中文字体渲染偏细,长时间看代码眼睛累。装一个等宽字体加一套中文黑体,再在终端里配置上,观感能提升一大截,实际体验上跟某些以字体好看著称的系统也就不差多少了。

sudo apt install -y fonts-jetbrains-mono fonts-noto-cjk
# 终端里把字体设为 JetBrains Mono,中文回退到 Noto Sans CJK

装完 fc-cache -fv 刷新一下字体缓存,不用重启。字体这东西见仁见智,但有一点是确定的:默认配置下的中文等宽对齐问题必须换字体才能解决,否则终端里的表格和 ls -l 输出会歪得让你怀疑人生。

更多推荐