说实话,2026年在物理机上安装Ubuntu 20.04,乍一听确实有点“老版本考古”的意思。但这些年各种发行版翻来覆去地更新,很多开发者和运维工程师最后还是把20.04当成了“舒适区”——尤其是嵌入式方向,Xilinx的PetaLinux、Vitis工具链,官方到现在都还锁定Ubuntu 20.04作为标准环境。再加上它是LTS版本,安全更新通道一直延续到2030年,所以哪怕现在装,也完全不落伍。
这篇教程不是那种“下一步下一步”的流水账,而是带你从准备工作一路走到安装完成后的环境配置,把每个关键决策背后的原因都讲透。不管是给老电脑装单系统、和Windows共存做双系统,还是专门为嵌入式开发攒一台Linux机器,你都能按这套流程走下去。我尽量把那些网上教程很少提、但实际特别容易踩的坑都放进来,帮你省掉反复重装的折腾。
1. 安装前的准备:把这几件事想明白再动手
装系统这件事,最怕的就是“冲动装机”。U盘一插就开始点,结果分区选错、引导搞坏、驱动没装,最后又全部推倒重来。所以开篇这20分钟,我建议你认真看完。
1.1 为什么非要在物理机上装?和虚拟机的本质区别
很多人会问:既然VMware能跑Ubuntu,我折腾物理机图什么?这个问题的答案,取决于你到底要拿这台机器干什么。
虚拟机装系统,本质上是把硬件资源“租”给虚拟机去用。CPU还好说,磁盘IO和GPU直通这两块,虚拟机始终有额外的性能损耗。如果你只是体验一下Linux、学学命令行,那虚拟机完全够用;但如果你要跑深度学习的模型训练、做FPGA的Vivado综合布局布线、搞音频实时处理,或者需要把USB设备直通到Linux里做嵌入式开发,虚拟机的性能损失和硬件兼容性就可能成为压死骆驼的最后一根稻草。
再说个更实际的场景。像热搜里提到的PetaLinux和Zynq7000交叉编译,这些工具链在虚拟机里跑经常会遇到USB设备识别不稳定、NFS服务响应慢的问题,而在物理机上这些问题基本不存在。所以一旦你确定要长期用它干活,物理机安装就是绕不开的一步。物理机和虚拟机的核心差异就在这里:物理机能拿到完整的硬件控制权,虚拟机的隔离层再怎么优化,也替代不了原生环境。
1.2 镜像下载:Ubuntu 20.04.x LTS怎么选才对
确认了要装物理机,接下来就是下载镜像。Ubuntu 20.04发布后陆续有小版本更新,分别对应20.04.1到20.04.6,现在官网和多数镜像站能下到的基本都是20.04.6。版本越靠后,自带的硬件驱动和安全性修复就越全,所以在2026年的今天,闭着眼睛也要选20.04.6 LTS这个发行版。
选镜像时你还会遇到Desktop和Server两个版本,简单说就是带不带图形界面。我的建议是:如果是个人日常使用、学习、做开发环境,选Desktop版,装完就有图形界面,用起来成本低很多;如果是要搭服务器、做无界面嵌入式宿主机,那就选Server版,资源占用少,而且大部分时候你都是通过SSH连上去的,图形界面纯属负担。部分下载渠道还提供了国内镜像源,比如清华、阿里的开源镜像站,下载速度稳定得多。下载完镜像别急着写U盘,先校验一下SHA256哈希值,防止文件在传输过程中损坏导致安装到一半报错,这一步我用一条命令就能完成。
1.3 启动U盘制作:Rufus参数千万别选错
做好镜像之后就要写U盘。这里要专门讲一下U盘工具和参数,因为很多人在这一步就用错了。推荐在Windows下用Rufus,开源免费,而且对UEFI支持非常友好。需要准备一个至少8GB的U盘,这个U盘在制作过程中会被格式化,里面有文件的记得提前备份。
Rufus打开后,设备选你的U盘,引导类型点“选择”按钮选中刚下载的iso镜像,下面关键的部分来了:分区类型选GPT,目标系统选UEFI(非CSM),文件系统保持FAT32即可。如果不小心选成了MBR,装完系统后你在BIOS里还得切换引导方式,特别麻烦,尤其是现在新电脑基本都是纯UEFI引导,MBR方案很容易导致启动不了。选好之后点击开始,Rufus会提示是否以DD镜像模式写入,直接选“以ISO镜像模式写入”就行。
写完之后,Windows可能会提示U盘需要格式化,千万别点,这说明引导盘已经做好,盘上已经不再是普通的数据文件结构了。制作工具的备选还有balenaEtcher和Ventoy:前者简单粗暴,跨平台;后者可以做一个“多系统引导U盘”,把多个ISO直接拖进去就能启动,适合经常折腾不同发行版的人。
1.4 BIOS/UEFI设置:装前10分钟决定成败
U盘就绪,先别急着插上开机,进BIOS做几个设置,能省掉后面一堆麻烦。
第一件事是关闭Secure Boot。Ubuntu 20.04的官方内核基本都走了微软的签名,默认开启Secure Boot通常也能启动,但后面装NVIDIA闭源驱动时,第三方内核模块经常会被Secure Boot拦下来,报一个“modules could not be loaded”之类的错。为了避免这个坑,我习惯在装系统前直接关闭Secure Boot,反正个人电脑也不太依赖这个安全功能。
第二件事是确认SATA模式。如果你之前装过Windows,并且BIOS里SATA模式是RAID或Intel RST,那装Ubuntu的时候可能会找不到硬盘。这种情况下需要把SATA模式改成AHCI。但这个操作对于已有Windows的系统有个连锁反应:Windows可能因为找不到对应驱动而蓝屏,所以如果你是双系统方案,建议在改模式之前先进Windows一次,或者做好系统修复盘准备。
第三件事是确认引导模式是UEFI而不是Legacy。现在的电脑基本都是UEFI,但有些主板在未配置时默认开了CSM模块以兼容旧系统。装Ubuntu之前,把CSM关掉,确保系统以纯UEFI方式引导,否则分区表格式和引导器的安装位置都会出现偏差,后面修复起来很头痛。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 磁盘分区方案:这一步做对,后面省心十年
分区是安装Ubuntu时劝退新手最多的一关。你可以在安装界面一键“清空整个磁盘并安装Ubuntu”,省事是省事,但如果你有双系统需求,或者不希望以后重装系统时文件全没,那还是有必要自己动手分一下区。
2.1 先搞清楚引导方式:UEFI+GPT才是现在的主流
分区之前必须搞清楚你的电脑是什么引导模式。这两年出厂的电脑,默认都是UEFI引导 + GPT分区表。UEFI是取代老旧BIOS的新一代固件接口,GPT则是配套的硬盘分区表标准,两者搭配才能支持2TB以上的大硬盘、以及更快的开机速度。
想确认自己现在是UEFI还是Legacy,可以在Windows下按Win+R,输入msinfo32回车,看“BIOS模式”这一行,显示“UEFI”就是UEFI模式,显示“传统”就是Legacy。还有一种情况是你的硬盘已经装过操作系统,可以在磁盘管理里看硬盘的类型——如果硬盘上有一个100~500MB、文件系统为FAT32的“EFI系统分区”,那基本就是GPT磁盘+UEFI引导跑不掉了。
Ubuntu的安装程序对UEFI+GPT有强制要求:如果你选的安装盘是GPT分区表,引导器必须装在EFI系统分区上。反过来,如果电脑是Legacy引导模式,你又选了GPT分区,Ubuntu装完之后经常出现“无法将GRUB安装到/target/”的报错,那基本就是模式不匹配。所以安装前可以再回头确认一下BIOS里引导模式是不是UEFI,缺这个意识的人太多了,不是少数。
2.2 三种分区方案怎么选:自动、手动还是双系统专用
确认了引导模式,接下来就是分区了。我总结了三种常用方案,对应不同使用场景。
方案一:全自动分区(适合“这台电脑以后就是Ubuntu专用了”)
安装类型里选“清除整个磁盘并安装Ubuntu”,安装程序会自动创建EFI分区、根分区和swap交换空间。好处是零操作,坏处是/和/home没有分开,以后要升级系统版本或者重装系统时,数据迁移会比较麻烦,需要先备份才能继续操作。
方案二:手动分区——根分区 + home分区(适合绝大多数个人开发机)
这是我最推荐的方案,也是双系统用户用的基础模板。在“安装类型”窗口里选择“其他选项”手动分区,然后创建这几个分区:
- /boot/efi:大小512MB,类型为EFI系统分区,挂载点选/boot/efi。这是UEFI引导系统必需的分区,相当于给固件一个存放引导文件的位置。
- /:大小给100GB到200GB之间,类型为主分区,挂载点选/。系统程序、软件包、缓存都装这里,装完开发环境和常用软件之后,60GB基本就吃紧,所以100GB只是及格线,有条件建议给200GB。
- /home:把剩余空间全给它,挂载点选/home。你平时的文档、代码、下载内容都会写进这里,和系统分区分离的最大好处是:将来重装系统,只要不动/home分区,数据全都在,不用做任何迁移工作。
- swap:关于交换空间的分配,现在我个人不太建议单独给它分区,20.04安装完默认就使用swap文件,它能随用随扩,不像swap分区那样把磁盘空间占死。你要是选了手动分区,只要内存足够(比如16GB以上),不建swap分区,后续用swap文件也是一样的。
方案三:手动分区——根分区 + home分区 + data分区(适合数据特别多的场景)
如果你有很多大文件资料、虚拟磁盘、或者数据集,还可以在方案二的基础上再加一个/data分区,把剩余空间的一部分挂到/data下,专门放那些不需要跟着/home迁移的大块内容。这样文件组织更清晰,备份策略也更灵活。
2.3 双系统安装顺序:到底是先Windows还是先Ubuntu
确实,双系统最经典的问题就是先后顺序混乱。官方推荐并且我用下来最稳的做法是:如果你已经在这块硬盘上跑Windows,那这次安装Ubuntu直接走“Shrink卷”的办法,在Windows的磁盘管理里把某个卷压缩出至少80GB的未分配空间,然后断开再进Ubuntu安装流程,让Ubuntu把这块空闲空间用掉。如果电脑上还没有Windows,准备装双系统,那顺序一定是先Windows,后Ubuntu。
为什么要先Windows?因为Windows安装程序有着强烈的“独占引导”倾向,它默认会重写引导扇区。如果你先装了Ubuntu,再回头装Windows,十有八九Windows会把自己的引导信息直接覆盖进去,Ubuntu的GRUB启动菜单就被顶掉了,开机直接进Windows,想找回Ubuntu还得修引导,凭空多出一堆事。反过来,先Windows后Ubuntu,Ubuntu的GRUB会自动识别到Windows的启动项,并在开机菜单中为你加载出来,什么都不用改。这一点也是我踩过几次坑之后才弄明白的,顺序千万别反。
3. 完整安装过程:从U盘启动到首次重启
前面的准备和分区方案都定好以后,剩下就是按照步骤进行了。这里我把每一步的关键动作和注意事项串起来,确保你照着做不会卡壳。
3.1 进入安装引导:为什么建议先试用再安装
把做好的U盘插进电脑USB接口(最好直连主板的后置USB口,前置面板的延长线供电不稳容易掉盘),开机后按启动菜单快捷键,一般是F12或F11,不同品牌主板不太一样,有的是Esc。在弹出的启动项里选择U盘的UEFI启动项,注意看名称,别选成带Legacy字样的,这样才能保证以UEFI模式引导。
过一会儿会进入GRUB引导菜单,你会看到“尝试或安装Ubuntu”和“Ubuntu(安全模式)”两个主要选项。这里其实隐藏着很多新手不知道的技巧:建议先选“尝试Ubuntu”,进入Live桌面环境。这么做有两个好处:第一,可以在真正安装之前确认这个发行版能够正常驱动你的显卡、网卡和声卡,如果你的硬件太新导致桌面起不来,那现在就能发现,而不需要等装完再折腾;第二,在Live环境里还可以联网确认网络正常,避免装完才发现网卡驱动有问题。
在Live桌面里,双击“安装Ubuntu”图标进入安装向导。前面是语言、键盘布局,按照自己的需求选即可。然后到“更新和其他软件”这一步,如果要节省时间,选择“最小安装”就已经具备基础办公和工具环境,需要完整办公套件和常用软件再选“正常安装”。同时,如果你不急着用镜像源里的软件,也可以不勾选“安装Ubuntu时下载更新”,这步留到后面系统装完再换源更新,速度会快很多。
3.2 分区操作实战:Something else模式全流程
到了“安装类型”窗口,选最后一个“其他选项”,点击继续,进入手动分区界面。
在这个界面里你会看到电脑上所有磁盘和已有分区。先找到“空闲”空间——这就是你准备给Ubuntu用的未分配空间。接下来我们用鼠标一台一台地建分区:
第一块,新建大小为512MB的分区,在“用作”下拉框里选择“EFI系统分区”。如果你的电脑里已经存在一个EFI分区(比如Windows的),不建议重复创建,直接把Ubuntu的引导器指向现有的EFI分区即可,GRUB会跟Windows的引导共存于同一个EFI分区里。
第二块,新建大小为100GB或更多的主分区,“用作”选择“ext4日志文件系统”,挂载点设为“/”。
第三块,剩余空间全部用于新建分区,“用作”选“ext4”,挂载点设为“/home”。
全部创建完成后,界面底部有“安装启动引导器的设备”这一项,很多人就是在这里选错。这里要选你整块硬盘(比如/dev/nvme0n1或/dev/sda),而不是/boot/efi这个分区。选整块硬盘,GRUB会自动找到EFI分区并写入引导文件,这个细节直接关系到开机能否出现GRUB引导菜单。确认无误后点击“现在安装”,安装程序会提示你将要格式化分区,确认无误就继续。提前检查这一步可以避免后续因为引导器安装位置导致的开机失败。
3.3 用户设置和首次重启的注意事项
接下来是地理位置和用户信息设置,这些都是常规操作。时区建议选“Shanghai”,系统会自动使用东八区时间。这里你只需要注意:用户名不要再使用一个纯中文的账户名,否则后面很多Linux下的工具链会因为路径中带中文而出现奇怪问题,使用符合惯例的英文用户名会安全得多。
填写完信息后系统开始安装。安装过程的进度条会遍历复制文件、配置硬盘、安装GRUB引导等环节,期间不要断电、不要强制关机,也不要去多余地操作键盘鼠标。装完之后会提示“现在重启”,点击重启时会要求你拔掉U盘再回车,这时直接把U盘拔掉,然后按提示重启即可。
4. 安装完成后的环境配置,让系统真正顺手起来
系统能正常进桌面,恭喜你,主流程已经完成。但一个真正能投入开发的Ubuntu系统,安装完成后还有一大堆环境配置要处理,这里我把优先级最高的几件列出来。
4.1 换源:apt更新提速的关键操作
默认情况下,Ubuntu使用官方源服务器进行软件更新,在国内环境下经常能感受到“龟速”。这时就需要把软件源切换到国内镜像。Ubuntu 20.04的软件源配置在/etc/apt/sources.list文件中,修改前先备份,这是一个良好的操作习惯:
bash复制sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo vim /etc/apt/sources.list
把文件内容替换成国内镜像站对应focal版本的源配置。以清华源为例,核心内容是把archive.ubuntu.com替换成mirrors.tuna.tsinghua.edu.cn,security部分对应focal-security。改完后执行:
bash复制sudo apt update
sudo apt upgrade
这里需要提醒一点:apt update过程中如果看到“GPG error”一类的提示,通常是签名密钥过期或未安装,先执行sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys <缺失的key>修复一下,再继续。换源之后,安装git、curl、wget、build-essential这些基础工具就快多了。
4.2 硬件驱动和桌面优化:显卡、SSD、输入法
换完源,第一件要紧的事是处理显卡驱动。如果机器是NVIDIA显卡,打开“软件和更新”工具,切到“附加驱动”标签页,系统会自动检测到可用的NVIDIA驱动版本,选一个标注了“专有”的版本点击应用即可。很多人在这一步卡壳是因为没考虑到Secure Boot的问题——前面已经让你关了,这里就能顺畅很多。如果你需要特定版本的驱动,再用官方.run安装包也不迟,但日常使用没必要那么复杂。
SSD用户要确认TRIM是否开启。现在Ubuntu 20.04默认开启了fstrim定时任务,一般不需要干预。可以用systemctl status fstrim.timer确认一下定时器在运行。这个操作的意义在于保持固态硬盘长期使用的读写性能,不会越用越卡。
中文输入法方面,我喜欢装fcitx5,对现代桌面环境的兼容性更好:
bash复制sudo apt install fcitx5 fcitx5-chinese-addons
装完把系统输入法框架切换到fcitx,注销重进,然后在输入法配置里添加拼音输入法即可。另外顺带装一下Python开发相关的工具链,python3-pip、venv这些在20.04自带Python 3.8的基础上是必不可少的,20.04默认Python版本是3.8,一些老项目的兼容性反而在这种旧版本上更稳。
4.3 嵌入式开发场景:补齐PetaLinux的依赖
最后单独说一下热搜里反复出现的PetaLinux和Zynq7000交叉编译场景。很多人在物理机装Ubuntu 20.04,就是为了跑Xilinx的全套工具链。Vivado和PetaLinux的官方支持列表里,Ubuntu 20.04目前仍然是重点支持的宿主系统。
在装PetaLinux之前,先把系统依赖装齐全,避免做到一半才缺库:
bash复制sudo apt install iproute2 gawk python3 python build-essential gcc git make net-tools libncurses5-dev zlib1g-dev libssl-dev flex bison libselinux1 xterm autoconf libtool texinfo gcc-multilib libc6-dev-i386 lib32z1 lib32stdc++6
初看这条命令很长,但基本覆盖了PetaLinux编译过程中最常用的那批库。需要注意,有几个包在新版本Ubuntu里可能不再直接提供,比如libncurses5-dev在20.04源里已经找不到,需要用libncurses-dev替代或者手动安装旧包。遇到这种问题不要慌,根据报错信息逐个调整即可。另外我强烈建议单独留出至少100GB磁盘空间给Xilinx工具链,Vivado和PetaLinux加起来体积非常大,装到一半磁盘满了是最尴尬的场景。
5. 常见问题排查:装系统时最容易翻车的几个点
无论教程多详细,实际操作中总会遇到意外情况。我把这些年见到的高频问题整理成一个速查表,遇到问题直接对照处理。
| 问题现象 | 常见原因 | 快速处理方法 |
|---|---|---|
| 安装完重启后黑屏,或卡在Logo | 显卡驱动未正常加载 | 启动菜单时按e,在linux行末尾加nomodeset,用系统自带通用驱动启动 |
| 装完Ubuntu后开机没有Windows选项 | GRUB未正确检测到Windows引导 | 先更新GRUB:sudo update-grub,如果还是不行,用boot-repair修复 |
| U盘无法进入安装界面 | 启动项错误或U盘写坏了 | 确认启动项是UEFI开头,重新用Rufus以GPT+UEFI模式写盘试试 |
| 安装时提示找不到磁盘 | 硬盘模式不是AHCI | 进BIOS把SATA模式改为AHCI,Windows系统需提前处理对应驱动 |
| 进入系统后无线网卡无法使用 | 驱动缺失或固件未安装 | 先用有线联网,在“软件和更新”附加驱动中安装网卡驱动 |
| Windows和Ubuntu时间相差8小时 | 两个系统对硬件时钟的解释方式不同 | 在Ubuntu下执行timedatectl set-local-rtc 1 --adjust-system-clock |
| 开机出现GRUB rescue界面 | GRUB引导文件损坏或找不到分区 | 进Live USB环境,挂载根分区后用boot-repair一键修复引导 |
5.1 黑屏和卡Logo的最快出路
黑屏是物理机装Ubuntu之后翻车率最高的问题,尤其NVIDIA独立显卡的用户。现象就是开机能看到GRUB菜单,选择启动之后显示器就一直黑着,或者卡死在开机Logo。解决方法是在GRUB启动项编辑界面,按e进入编辑模式,找到以linux开头的那一行,在行尾的空格后加上nomodeset,然后按F10或Ctrl+X启动,这样系统会用基本显示驱动进入桌面,之后再去“附加驱动”里安装显卡专有驱动,装完重启,就可以把nomodeset去掉了。
这个参数的本质是禁用内核模式设置,让显卡使用最基础的VESA兼容驱动,虽然显示效果有限,但能让你安全地进入系统完成后续驱动安装。新手遇到黑屏第一反应是重装,这是最大的弯路,改个启动参数往往就能解决。
5.2 GRUB引导修复:用Live USB两分钟救回来
如果说黑屏是第一位的高频问题,那引导丢失就是第二位了。装了Ubuntu之后,开机菜单里找不到Windows,或者Windows更新把GRUB顶掉了,都是引导层面的故障。修复工具推荐用boot-repair,它基本是傻瓜式操作,但要在Live USB环境里运行。
用之前写好的Ubuntu安装U盘启动,选择“尝试Ubuntu”,进入桌面后打开终端:
bash复制sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt update
sudo apt install boot-repair
boot-repair
启动后点击“推荐修复”,它会自动检测EFI分区、修复GRUB并更新引导菜单。整个过程大概几分钟,修完重启一般就能看到双系统菜单了。如果你遇到的是“GRUB rescue”提示符,那说明GRUB的位置或者你的根分区已经找不到了,这种情况下boot-repair也基本都能恢复,实在不行再考虑从零重装。
5.3 那些“不算问题但很烦人”的小毛病
除了上面两个大故障,还有几个高频小问题需要说一下。
无线网卡不识别:特别是部分Intel AX200/210系列,Ubuntu 20.04的内核比较旧,可能默认不带驱动。解决办法是先用有线网联网,然后去“附加驱动”装驱动,或者升级内核到HWE版本。如果你买电脑的时候就知道自己要装Linux,尽量避开那些冷门无线网卡品牌,这是最省事的策略。
Windows和Ubuntu时间差8小时:这个现象的根源是Windows把硬件时钟当作本地时间,Linux把硬件时钟当作UTC时间。要让两边统一,在Ubuntu里执行timedatectl set-local-rtc 1 --adjust-system-clock就行,重启后两边时间就对齐了。这个命令只是在解释方式上做了调整,没有安全顾虑,纯本地设置。
安装程序运行到一半卡死:一般跟U盘质量有关。换一个品牌的U盘,用后置USB 2.0接口重试,大多数情况下能解决。偶尔也跟BIOS里的USB XHCI设置有关,在BIOS里把“Legacy USB Support”开关切换一下再试。
6. 最后分享一点踩坑之后的个人体会
装系统这件事,做多了你会发现,最耗时间的往往不是安装过程本身,而是各种准备工作和环境配置。我个人的习惯是:先把方案理清楚,再动手,尤其是分区方案,装之前想清楚比装完再后悔省心太多。现在回过头看看,当时那个“把/home单独分出来”的决定真是帮了大忙,后来重装系统、升级版本,所有数据和配置都安然无恙。
另外一个体会是,装完系统别急着追求各种“美化”和“优化”,先把你真正干活要用的工具链跑起来,比如PetaLinux或者Python环境,确认核心流程通畅之后,再来折腾桌面和输入法也不迟。系统能稳定运行、工具链能用,比什么都重要。
如果你这次想把Ubuntu 20.04作为主力开发机,装完之后接着可以做的事情还有很多:配Docker、配Git、搭SSH远程开发环境、优化终端体验,这些我之后有空再单独写。希望这次安装过程顺利,遇到问题欢迎对照上面的排查表逐个实践,大部分坑都是可以自己救回来的。
