Ubuntu 20.04 这个版本到今天依然有大量人在装,尤其是做机器人、视觉、嵌入式开发的同学,很多工具链的官方文档还停在 Focal Fossa 这一代。我自己的主力机器是 Windows,每次要快速搭一个干净的 Linux 环境,第一反应永远是打开 VMware 建个虚拟机装 Ubuntu 20.04,而不是去折腾双系统。原因很实在:虚拟机可以随时拍快照、随时删掉重来,分区搞坏了不用拿 U 盘救砖,宿主机上的微信、浏览器、Office 一个都不用关。这篇就按我自己的实操顺序,把从零建虚拟机到系统跑起来的完整过程拆开讲,包括那些填参数时容易懵的选项、装完之后必须补的几个动作,以及我踩过的几类坑。不管你是第一次碰 Linux 虚拟机,还是装过好几次但总有小毛病没解决,应该都能从里面捞到点东西。
1. 先想清楚:为什么用虚拟机而不是双系统
1.1 虚拟机与双系统在真实使用中的取舍
很多人一上来就问"虚拟机性能是不是很差",这个问题的答案取决于你要干什么。如果你的目标是跑深度学习训练、编译大型 C++ 工程、做视频渲染,那虚拟机确实会吃亏,因为 CPU 指令要经过一层虚拟化转换,磁盘 IO 也要过虚拟磁盘文件,性能损失通常在 5% 到 20% 之间,具体看负载类型。但如果你的目标是跑 ROS 节点、写 Python 脚本、调试一个 Web 服务、跟着教程学 Linux 命令,虚拟机完全够用,甚至比双系统更舒服。
双系统的优势是性能无损、能直接访问全部硬件,但代价也很明显:切换要走重启流程,两个系统共享磁盘空间需要提前规划好,装错了引导项还可能把 Windows 弄得起不来。我自己早年给一台笔记本装过 Ubuntu 20.04 双系统,结果一次内核更新之后 GRUB 引导顺序乱了,折腾了一晚上才恢复。从那之后,除非客户明确要求物理机环境,我都是用虚拟机先做验证。
虚拟机还有两个双系统给不了的能力:快照和克隆。快照相当于游戏存档,装驱动装崩了、改配置把网络搞没了,回滚一下十秒钟解决。克隆可以复制出一台一模一样的机器,我做分布式测试的时候经常一次克隆三台,改改 IP 就能组个小集群。这两个能力在实际排查问题和做实验的时候价值极高。
提示:如果你的工作涉及需要直接访问 USB 加密狗、串口硬件、PCIe 采集卡,虚拟机的透传虽然有方案,但稳定性不如物理机,这种情况建议老老实实装双系统或者单独备一台机器。
1.2 版本怎么选:Workstation Pro 还是 Player,桌面版还是 Server
VMware 这边的产品线现在比较清爽了:Workstation Pro 是完整版,支持快照、克隆、多虚拟机同时运行、虚拟网络编辑器这些高级功能;Workstation Player 是精简版,个人使用免费,但没有快照和克隆,虚拟网络的可定制程度也低。我的建议是直接用 Workstation Pro,因为现在官方对个人使用场景提供了免费的授权路径,去官网注册个账号按引导走就行。
这里要特别强调一句:不要去网上搜所谓"密钥生成器"或者来路不明的序列号。这类东西一是可能带木马,二是版本对不上会导致激活失败甚至软件异常退出,为了省几分钟埋个雷不划算。正规渠道拿到的授权,用起来心里踏实。
Ubuntu 这边要区分 Desktop 版和 Server 版。Desktop 版带图形界面,适合日常开发、跑 IDE、看仿真窗口;Server 版没有图形界面,占用资源少,适合当服务器练手。新手我强烈建议从 Desktop 版开始,因为图形界面能帮你确认很多状态,比如网络连没连上、磁盘挂没挂上,命令行搞不定的时候还能开个浏览器搜一下。
另外提醒一句,Ubuntu 20.04 LTS 的标准维护期已经走完了,现在处于扩展安全维护阶段。如果你只是本地学习、跑跑实验,不暴露在公网,继续用没什么问题;如果是长期跑的服务器,建议认真评估一下是不是直接上 22.04 或 24.04。我写这篇还是以 20.04 为主,因为大量机器人相关的教程和依赖包都是针对它的。
2. 动手前的准备工作,别急着点下一步
2.1 镜像下载与完整性校验
Ubuntu 20.04 的桌面版镜像文件大概 2.5GB 左右,官方发布页面上会同时提供 SHA256 校验值。下载完之后一定要校验一遍,尤其是用某些下载工具断点续传过的文件,看着下完了实际上尾部可能缺字节,装到一半报"无法读取介质"就是这个原因。
Windows 上校验可以用 PowerShell 里的命令:
Get-FileHash .\ubuntu-20.04.6-desktop-amd64.iso -Algorithm SHA256Linux 或者 macOS 下更简单:
sha256sum ubuntu-20.04.6-desktop-amd64.iso把输出的哈希值和官网公布的值逐位比对,一致就说明文件没问题。这一步花不了三十秒,但能省掉后面最难排查的一类故障。
2.2 硬盘空间与内存该怎么算
虚拟机的资源分配不是越多越好,要给宿主机留足余量。我的经验公式是这样的:宿主机内存 16GB 的话,虚拟机给 4GB 到 6GB;宿主机 32GB 的话,虚拟机给 8GB;宿主机只有 8GB,那虚拟机最多给 2GB 到 3GB,再多宿主机自己就开始疯狂读盘了。
CPU 核心数同理,不要把所有核心都分给虚拟机。假设宿主机是 8 核 16 线程,虚拟机给 2 核或者 4 核就够日常开发用。分太多的后果是宿主机响应变慢,而且虚拟机内部调度反而容易抖动。
磁盘空间的估算要分两块看。系统本身加上常用开发工具,40GB 是起步线;如果你还要装 ROS、编译大型工程、下载数据集,建议直接给 80GB 到 100GB。虚拟磁盘的"精简置备"模式意味着你给 100GB 不代表立刻占用 100GB 物理空间,它是用多少占多少,所以放心给大一点。
注意:虚拟机磁盘文件必须放在有足够剩余空间的物理盘上。很多人把虚拟机放在 C 盘,结果系统盘剩 10GB 就红了,虚拟机一开就报磁盘空间不足。养成习惯,单独建一个目录,比如
D:\VMs\,所有虚拟机都放这里。
2.3 宿主机必须打开的硬件虚拟化开关
这一步是新手最容易漏掉的。VMware 要跑得动 64 位虚拟机,宿主机 CPU 的虚拟化扩展必须打开。Intel 平台叫 VT-x,AMD 平台叫 AMD-V,需要在 BIOS 或 UEFI 里手动开启。判断有没有开,任务管理器"性能"标签页里看 CPU 那一栏,会有一行"虚拟化:已启用/已禁用"。
还有一类情况是开关打开了但还是不行,原因是 Windows 上开启了 Hyper-V 相关的功能,包括 WSL2、Windows 沙盒、内核隔离里的内存完整性检查、设备防护这些。这些功能会抢占虚拟化层,导致 VMware 报错或者性能大幅下降。我遇到过一台机器,虚拟机跑起来像幻灯片,查了半天发现是开了内存完整性。关掉重启之后流畅得完全不像同一台机器。
判断方法也简单:如果 VMware 启动时弹窗提示"此平台不支持虚拟化的 Intel VT-x/EPT",或者运行起来特别卡,先去检查这几项。Windows 专业版可以在"启用或关闭 Windows 功能"里看到 Hyper-V 是否被勾选,家庭版则重点看"内核隔离"设置。
3. 新建虚拟机的参数怎么填才不返工
3.1 新建向导里每一项背后的含义
打开 Workstation,选"创建新的虚拟机",我一般选"自定义(高级)",因为典型模式给的默认值往往偏小,后面还是要改。硬件兼容性保持最新版本就行,除非你要把虚拟机文件拷到低版本 VMware 上用。
客户机操作系统这一页选"Linux",版本选"Ubuntu 64 位"。虚拟机名称建议用有意义的名字,比如ubuntu2004-ros-dev,别用默认的Ubuntu 64 位,不然克隆几台之后你根本分不清哪台是哪台。位置就是前面说的D:\VMs\这样的独立目录。
处理器配置页,按前面算的给。内存页同样。网络类型这一页很关键,三个选项的区别值得说清楚:
| 网络模式 | 工作方式 | 适用场景 | 主要坑点 |
|---|---|---|---|
| 桥接(Bridged) | 虚拟机和宿主机同处一个物理网段,向路由器要 IP | 需要局域网内其他设备访问虚拟机,比如手机测页面 | 公司网络可能限制每个设备的 MAC 地址,容易拿不到 IP |
| NAT | 虚拟机借宿主机 IP 出去,宿主机做路由 | 日常上网、下载包、做实验 | 外部设备默认访问不到虚拟机,需要手动做端口转发 |
| 仅主机(Host-only) | 只能和宿主机通信,出不了网 | 做纯隔离的渗透测试实验、断网环境验证 | 完全没法更新软件包 |
日常开发我选 NAT,省心。需要局域网访问的时候临时加一块桥接网卡,比一开始就选桥接然后发现拿不到 IP 要舒服得多。
磁盘页选"创建新虚拟磁盘",容量按前面估算给,不要勾选"立即分配所有磁盘空间",勾了会立刻占满物理磁盘。磁盘存储为单个文件还是拆成多个文件?单个文件性能略好,但单文件超过 4GB 之后没法直接拷到 FAT32 的移动硬盘上。现在基本都是 NTFS 或者 exFAT,单文件没问题,我一般选单个文件。
3.2 生成之后值得手动改的几处配置
虚拟机建好但还没开机的时候,进"编辑虚拟机设置"再检查一遍。有几个地方向导里没提但很有用。
USB 控制器:默认是 USB 2.0,如果你要用 USB 3.0 的移动硬盘或者高速调试器,改成 USB 3.1。改了之后虚拟机里的 Ubuntu 才能识别到 USB 3.0 设备。
声卡:如果虚拟机只当开发环境用,声卡可以直接移除或者取消"启动时连接",能省一点资源,也避免宿主机音频设备被抢占。
共享文件夹:这个可以在装完系统后再配,也可以在设置里先加上。先加的时候记得勾选"在 Windows 客户机中映射为网络驱动器"是不需要的,那是给 Windows 虚拟机用的。
显示器:默认"使用主机设置",最多支持 1 台显示器。如果你打算给虚拟机双屏,这里要改成"指定监视器设置",把数量调上去。
配置文件的细节如果感兴趣,可以在虚拟机目录里找到扩展名为.vmx的文本文件,用记事本打开就能看到所有硬件参数。比如memsize = "8192"是内存大小(单位 MB),numvcpus = "4"是 CPU 核心数。改这个文件必须在虚拟机关机状态下进行,改完保存再开机才生效。这是排查一些诡异问题的好入口,比如虚拟机莫名只认到 1 个核心,很可能就是这里写死了。
4. Ubuntu 20.04 安装过程实操记录
4.1 引导启动与安装模式选择
虚拟机设置里选中"CD/DVD",指向前面下载好的 ISO 文件,勾上"启动时连接"。点"开启此虚拟机",会先看到 VMware 的启动画面,然后进入 GRUB 菜单。这里有个细节:如果几秒内不操作,它会自动进入默认项,如果宿主机性能一般,建议用方向键选中"Ubuntu"再按回车,不要等它自动跳。
进入之后会有一段自检和加载过程,屏幕左下角有个键盘图标和一个无障碍图标。想省事可以直接等它进安装界面,想自定义语言和辅助功能就先点一下。
安装界面第一步选语言,选中文或者英文都行。我习惯选英文,原因是命令行下的报错信息、日志、搜索结果全是英文,中文界面下遇到问题去搜反而要多翻译一层。如果你习惯中文,选中文完全没问题,只是注意某些老教程里的菜单路径可能对不上。
第二步是"更新和其他软件",选"正常安装"。这里有个选项叫"安装 Ubuntu 时下载更新",我建议第一次装的时候取消勾选,因为安装过程本身就要读写大量文件,再叠加下载更新会明显变慢,还容易在网速不稳的时候卡住。等系统跑起来之后再统一更新,可控得多。第三方软件那个勾也可以先不打,后面需要什么装什么。
4.2 分区方案怎么定,别用默认的整盘
这一步是虚机和双系统最容易出分歧的地方。虚拟机里因为整块虚拟磁盘都归 Ubuntu 用,选"清除整个磁盘并安装 Ubuntu"是不会影响宿主机的,安全性上没有任何问题。但我还是建议选"其他选项"手动分区,理由有两个:一是手动分区能让你彻底搞清楚 Linux 的目录结构,二是后面要做磁盘扩容或者迁移的时候,知道分区布局会省很多事。
针对一块 100GB 的虚拟磁盘,我通常这么分:
| 挂载点 | 建议大小 | 文件系统 | 说明 |
|---|---|---|---|
| EFI 系统分区 | 512MB | fat32 | 仅 UEFI 启动时需要,传统 BIOS 可跳过 |
| /boot | 2GB | ext4 | 存放内核和引导文件,独立出来避免根分区满了开不了机 |
| /(根) | 40GB | ext4 | 系统和软件包都在这,给大点留余量 |
| swap | 4GB | swap | 内存 8GB 以下建议与内存等大或略大,8GB 以上给 4GB 够用 |
| /home | 剩余全部 | ext4 | 个人数据和配置都在这里,重装系统时可以保留 |
swap 分区的争议一直很大。现在的观点是内存足够大的话不需要太大 swap,甚至可以用 swapfile 代替分区。但虚拟机有个特殊场景:挂起和恢复对 swap 有一定依赖,而且做实验的时候经常要跑一堆进程吃内存,所以我习惯留一个 4GB 的 swap 兜底。
分区的时候要特别注意"安装启动引导器的设备"这个下拉框。UEFI 模式下应该指向 efi 分区对应的磁盘(比如/dev/sda),千万不要指到某个具体分区上,指错了会导致引导装不上,重启之后直接进 BIOS。
4.3 用户设置与安装完成后的第一轮操作
分区确认之后会提示"将以下分区格式化",核对一遍没问题就继续。接下来选时区,国内选 Shanghai。然后是用户信息,这里有几个点值得说。
用户名建议全小写、不带特殊字符,因为很多脚本和路径拼接都假设用户名是纯小写字母。密码设一个你记得住的,但别用 123456,因为后面sudo要频繁输密码。计算机名同理,全小写加短横线比较稳妥,比如ubuntu-dev。
安装过程大概十几分钟,取决于宿主机磁盘速度。装完提示重启,重启时如果卡在黑屏或者一直转圈,先等一两分钟,虚拟机首次启动有时候要做文件系统检查。如果超过三分钟还是没动静,强制关机,检查一下是不是引导装错了位置。
进入桌面之后,我固定做这几件事:
第一件,打开终端跑一次全面更新:
sudo apt update sudo apt upgrade -y sudo apt autoremove -y第二件,装 open-vm-tools 的桌面版。这是 Ubuntu 官方维护的虚拟机工具包,比手动挂载 VMware Tools 的 ISO 要省事,而且更新走 apt 流程:
sudo apt install -y open-vm-tools open-vm-tools-desktop装完之后重启,分辨率能自动跟随 VMware 窗口大小,剪贴板双向复制和文件拖拽也都能用了。
第三件,换软件源。默认源在国内速度不理想,换成国内镜像站会快很多。编辑之前先备份:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak sudo sed -i 's|http://archive.ubuntu.com|https://mirrors.tuna.tsinghua.edu.cn|g' /etc/apt/sources.list sudo sed -i 's|http://security.ubuntu.com|https://mirrors.tuna.tsinghua.edu.cn|g' /etc/apt/sources.list sudo apt update改完跑一次apt update,如果没报错就说明源可用。
第四件,拍第一个快照。这是整个流程里我最看重的一步。快照名字用base-clean-install这种格式,一眼就能看出状态。后面不管装什么搞崩了,回滚到这个点都是干净环境。
5. 装完之后那些容易卡住的问题
5.1 网络类问题:没有适配器、拿不到 IP、访问不到宿主机服务
"虚拟机没有网络适配器"是我被问得最多的一个问题。表现是ifconfig或者ip addr里只有 lo,没有 ens33 之类的网卡。绝大多数情况下不是系统问题,而是虚拟机设置的"网络适配器"那一栏被取消了勾选,或者选了"仅主机"模式而宿主机上对应的虚拟网卡被禁用了。
排查顺序是这样:先在 VMware 的"编辑虚拟机设置"里确认网络适配器存在且勾选了"启动时连接";然后看 VMware 菜单里"编辑 - 虚拟网络编辑器"中,对应模式的虚拟网卡(VMnet0/VMnet1/VMnet8)是不是正常工作;最后再进系统里看网卡有没有被识别。
如果是 NAT 模式下能上网但访问不了宿主机上的服务,这是因为 NAT 网络里宿主机通常是被屏蔽的,需要在 VMware 的 NAT 设置里加端口转发规则。反过来,如果你希望从宿主机直接访问虚拟机上的 Web 服务,最简单的方式是给虚拟机加一块仅主机网卡,然后用那个网段的 IP 访问。
还有一个很隐蔽的坑:克隆虚拟机之后 MAC 地址冲突。VMware 在克隆的时候会询问是否重新生成 MAC 地址,如果选了"否",两台虚拟机在同一个网络里就会出现 IP 争抢,表现为网络时通时断。遇到这种情况,在虚拟机设置里点"生成新的 MAC 地址",重启网卡就好了。
5.2 显示与虚拟机工具相关的问题
关于"继续运行脚本未能在虚拟机中成功运行",这个提示一般出现在你手动挂载 VMware Tools 的 ISO 然后执行安装脚本的时候。原因是 VMware 自带的那套工具安装脚本对新版本内核的适配经常滞后,编译内核模块失败。解决思路很直接:别用 ISO 里的老版本,改用 apt 里的 open-vm-tools。如果已经装了 ISO 版,先卸载再装 apt 版。
sudo apt purge -y open-vm-tools open-vm-tools-desktop vmware-tools sudo apt install -y open-vm-tools open-vm-tools-desktop sudo reboot分辨率不能自动调整,通常也是 open-vm-tools-desktop 没装或者没生效。可以先确认服务状态:
systemctl status open-vm-tools systemctl status vmtoolsd如果服务是 active 但分辨率还是不对,试试手动设置:
xrandr --output Virtual1 --mode 1920x1080关于显卡驱动,这里必须澄清一个常见的误区。热词里有"ubuntu20.04安装显卡驱动 apt install nvidia-driver-535",这条命令在物理机上确实很常用,但在 VMware 虚拟机里跑是没有意义的。虚拟机看到的显卡是 VMware 模拟出来的 SVGA 设备,lspci | grep -i vga出来的是 VMware 自己的标识,NVIDIA 的闭源驱动根本不认识它。强行装上去轻则报错,重则 X 服务起不来直接黑屏。
虚拟机里真正的图形加速走的是 open-vm-tools 里的 3D 驱动通道,需要在虚拟机设置里勾选"加速 3D 图形"(注意这个选项一旦勾选,内存分配会受一定限制)。如果你确实需要用到物理显卡的算力,那要靠 PCI 直通把独显整个透给虚拟机,这需要宿主机支持 IOMMU、主板和显卡都有一定要求,完全是另一个话题了。
如果你装 Ubuntu 20.04 的最终目的是部署 ORB-SLAM3 这类视觉项目,那显卡驱动的问题在虚拟机里基本无解,因为这类项目很多环节依赖 CUDA,而 CUDA 要求真实的 NVIDIA 驱动栈。我的建议是:虚拟机里先把代码编译通过、流程跑通,用 CPU 模式验证逻辑,等真要跑实时性能测试的时候再上物理机。这样能省掉大量在虚拟机里折腾驱动的无效时间。
5.3 其他高频故障排查速查
| 现象 | 可能原因 | 处理方式 |
|---|---|---|
| 开机直接进 BIOS 或报 no bootable device | 引导安装位置选错 | 重新安装,引导器指向磁盘而非分区 |
| 界面卡死、鼠标动不了 | 3D 加速与显卡驱动冲突 | 虚拟机设置里关闭 3D 加速,或在 GRUB 里加 nomodeset 参数 |
| 系统时间每次都慢几个小时 | 挂起恢复后时钟漂移 | 安装 open-vm-tools 后执行sudo timedatectl set-ntp true |
| 虚拟机整体卡顿严重 | 宿主机开启了 Hyper-V 或内存完整性 | 关闭相关功能并重启宿主机 |
| 磁盘写满但看着还有空间 | 虚拟机磁盘快照占用过多 | 在快照管理器里删除旧快照,注意删除快照本身也耗时 |
| 剪贴板无法双向复制 | 缺少 open-vm-tools-desktop | 安装后重启,确认 vmtoolsd 进程在跑 |
| 宿主机访问不到虚拟机内的网站 | NAT 模式默认隔离 | 加仅主机网卡,或配置 NAT 端口转发 |
| 复制进来的文件没有执行权限 | 共享文件夹挂载参数限制 | 改用 scp 传输,或在挂载参数里调整权限选项 |
最后一行说的共享文件夹,有个细节值得展开。Ubuntu 20.04 下共享文件夹默认挂载在/mnt/hgfs,但新版内核里这个挂载不再自动完成,需要手动执行:
sudo vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other -o uid=1000 -o gid=1000allow_other让普通用户也能访问,uid和gid指定文件归属,这样复制进去的文件权限才正常。要做成开机自动挂载,把这行写进/etc/fstab:
.host:/ /mnt/hgfs fuse.vmhgfs-fuse allow_other,uid=1000,gid=1000,defaults 0 06. 我从这些年的虚拟机使用里攒下的几点经验
6.1 快照要有策略,别当成无限存档
快照很好用,但滥用会出问题。快照的原理是把当前磁盘状态冻结,后续写入全部记到增量文件里,所以快照开得越多,磁盘 IO 越慢,占用的空间也越大。我见过有人开着七八个快照跑了大半年,虚拟机磁盘文件从 40GB 涨到了 200GB,卡得没法用。
我的做法是:装完干净系统拍一个,叫base;装完主要开发环境拍一个,叫dev-ready;做某个有风险的实验之前临时拍一个,名字带上日期,实验做完确认没问题立刻删掉。删除快照的时候要留意,VMware 需要把增量数据和基础磁盘合并,这个过程可能持续十几分钟,期间千万别强行关虚拟机。
另外,拍快照之前最好把虚拟机关机,而不是在运行状态下拍。运行状态快照会连同内存一起保存,文件体积大,恢复之后网络状态有时候也会异常。
6.2 克隆与磁盘扩容的取舍
需要多台机器做实验的时候,克隆比重新装一遍快得多。这里要区分完整克隆和链接克隆:完整克隆是彻底复制一份,占用完整的磁盘空间,但独立性强,删掉母盘也不影响;链接克隆共享母盘的只读数据,省空间,但母盘一旦损坏,所有链接克隆全部报废。日常用完整克隆更省心。
克隆完第一件事是改主机名和 IP,不然几台机器重名会在网络里出乱子:
sudo hostnamectl set-hostname ubuntu-node2 sudo sed -i 's/ubuntu-dev/ubuntu-node2/g' /etc/hosts磁盘空间不够用的时候,扩容流程分两步。先在 VMware 设置里把磁盘容量调大,这一步只是改了大小的声明,虚拟机内部还没感知到;然后进系统用gparted或者命令行扩分区和文件系统。如果有快照存在,扩容操作会被拒绝,必须先删掉所有快照。这也是我建议平时别留太多快照的原因之一,关键时刻它会挡路。
6.3 后续可以怎么接着折腾
环境跑起来之后,往哪个方向走取决于你的目标。做机器人的话,Ubuntu 20.04 对应的是 ROS Noetic,这是 ROS1 的最后一个长期支持版本,安装流程比较成熟:
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu focal main" > /etc/apt/sources.list.d/ros-latest.list' sudo apt install -y ros-noetic-desktop-full装完记得source /opt/ros/noetic/setup.bash,并且写进.bashrc。
做通用开发的话,把 zsh、oh-my-zsh、tmux、docker 这套配起来,虚拟机基本就变成一个随时能带走的工作站。Docker 在虚拟机里跑还有一个额外好处:外层的虚拟机本身就是一层隔离,你可以在里面随便折腾容器而不用担心影响宿主机。
我个人最后的体会是,虚拟机最大的价值不是省钱,而是它把"试错成本"压到了最低。随便改、随便装、随便搞崩,回滚一次就回到原点。这台 20.04 的虚拟机我用了很久,前后回滚过十几次,里面装过 ROS、编译过大型工程、也跑过 Web 服务,每次搞坏了都不心疼。如果你正准备开始,建议就在第一次装完、更新完、确认网络和显示都正常的那一刻,老老实实拍下一个快照——这个动作会在此后无数次救你的命。