ARTICLE DETAIL

资讯详情

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

Ubuntu系统重装与数据保护:双系统、驱动及环境恢复实战指南

Ubuntu系统重装与数据保护:双系统、驱动及环境恢复实战指南 1. 重装前先想明白你到底是系统坏了还是环境乱了先说点实在的。我见过太多人一遇到 Ubuntu 出问题就格式化重装结果装完系统发现软件、驱动、环境变量、开发工具全得从头配一遍折腾两三天才回到原来状态中间还丢了一堆配置和数据。重装这事本质上要区分三种场景一种是系统文件损坏、内核崩了、启动引导彻底挂了不重装解决不了第二种是软件环境乱成一锅粥——Python 版本冲突、依赖库互相覆盖、环境变量被改得面目全非修复的成本比重装还高第三种是分区规划不合理比如当初给根目录只分了 20G装几个大型软件就满了必须重新划分磁盘布局。只有想清楚自己属于哪一种才知道该走哪条路。从热词里能看到很多人是Ubuntu 双系统安装虚拟机安装 UbuntuUbuntu 系统重装一起搜的说明大家在 Windows 和 Linux 之间反复横跳或者虚拟机里折腾坏了想重来。无论哪种情况有一条原则永远适用重装的是系统但你要保住的是数据。动手之前先盘点一下自己有哪些不可再生资源。我列个清单家目录下的文档、图片、代码仓库/home/用户名/下的全部内容浏览器书签和已保存密码Chrome/Firefox 配置目录SSH 密钥对~/.ssh/id_rsa、id_ed25519等丢了没法补GPG 密钥、各类 Token 配置文件数据库数据MySQL/PostgreSQL 的数据目录当前系统安装过的软件清单方便重装后对照恢复备份方式根据数据量大小来选。数据不多几 GB 以内直接拷贝到 U 盘或另一块硬盘数据量大建议用 rsync 做增量同步。我自己最常用的命令是rsync -avhP --progress /home/用户名 /media/用户名/移动硬盘名/-a保留权限和时间戳-h人类可读显示-P显示进度并支持断点续传。备份完别急着收工重点检查.ssh、.env、.gitconfig、.bashrc这几个隐蔽文件有没有被覆盖到位。做启动盘也是一样的逻辑。Ubuntu 官方 ISO 从官网下载后Windows 下推荐用 Rufus选 GPT 分区方案 UEFI 目标系统类型Linux 下用dd命令直写就行。注意现在新电脑基本都是 UEFI 引导老旧教程里那些 MBR legacy 的方式应该被淘汰了。U 盘做好后开机进启动菜单F12/F2/Esc 因机器而异如果进不去安装界面九成是 Secure Boot 或启动顺序的问题先把 Secure Boot 关掉再试一次这是排查流程的第一步不是最后一步。2. 分区方案别照抄一份能讲清楚原理的 Ubuntu 分区指南重新分区是重装的核心价值所在。很多人第一次装系统时直接选了清除整个磁盘并安装 Ubuntu的自动分区图省事后期就为分区不合理买单。分区这件事说到底是把你的物理硬盘切成几个逻辑区域每个区域挂载到系统的不同目录各自独立管理。理解这一点你就会明白为什么/home独立分区是最值得做的决策。我的实际建议是除非你明确知道自己在做什么否则不要跟风搞一堆花哨的分区布局。官方自动安装其实够用但你要是吃过空间不足的亏或者想实现重装修复不动数据那手动分区值得认真做一次。下面这张表是我的常用推荐方案按使用场景分了三档场景挂载点大小文件系统说明单系统日常使用/剩余全部ext4系统与数据不分离适合数据量不大的人单系统 数据保护/80-120Gext4系统装在根分区重装只动这里单系统 数据保护/home剩余全部ext4个人数据独立重装系统不影响文件双系统Windows 已占一半/60-100Gext4给根目录留够装软件的空间双系统Windows 已占一半/home剩余空间ext4媒体、下载、文档放这里内存 8G 以下swap等于内存大小swap内存小swap 用来兜底内存 16G 以上且需要休眠swap至少 8-16Gswap休眠需要把内存写入 swapswap 分区的大小是个经典争议话题。早年流传的swap 等于两倍内存是针对内存只有 512M 的机器现在的电脑动辄 16G、32G 内存这个公式早不适用了。我的理解是内存够大、不用休眠swap 完全可以不建系统在内存不足时会直接 OOM 杀进程反而干脆需要休眠功能swap 至少要覆盖内存中已被占用的最大容量。拿不准的情况下设 8G 是个不容易出错的中庸值。文件系统方面ext4 依旧是默认的稳妥之选兼容性最好误操作后的救援工具也最多。Btrfs 虽然支持快照和写时复制CoW但如果你不打算研究它的快照管理逻辑反而会因为空间回收不及时、碎片膨胀等问题增加维护负担。XFS 单文件性能好但没法缩小分区灵活度差。我是过来人在文件系统上吃过亏现在给别人装机一律 ext4。分区之前还有一个关键步骤看懂磁盘设备名。nvme0n1开头的是 NVMe 固态硬盘sda、sdb是 SATA 硬盘或 U 盘vda是虚拟机里的虚拟磁盘。分区号从 1 开始编号比如nvme0n1p1、nvme0n1p2。手动分区时很容易搞混尤其是双系统场景——Windows 的 EFI 分区和 Ubuntu 的 EFI 分区长得几乎一样。这里有个判断技巧lsblk -f命令会列出每个分区的文件系统类型和 UUIDWindows 的 EFI 分区文件系统是vfatFAT32分区标签里通常带EFI或SYSTEM字样Ubuntu 的/和/home一旦格式化原有数据就彻底覆盖了所以在点安装按钮之前把lsblk -f的输出截图或者抄下来反复核对设备名和分区编号。有一个分区选项要特别提醒不要在手动分区时选择加密系统盘LUKS除非你非常确定要这个功能。LUKS 加密确实能保护数据安全但代价是每次开机输密码、系统读写性能打折扣更关键的是——一旦你忘了密码或者系统引导损坏数据恢复的难度呈指数级上升。我自己遇到过一台加密盘的系统升级失败因为进不了 GRUB 也解不开 LUKS最后只能格式化重装里面的数据全部陪葬。对于绝大多数个人用户数据安全的重心应该放在备份习惯上而不是加密上。3. UEFI 时代双系统安装与引导自救手册装双系统是另一大热门需求从热搜词里能看到大量win11 重装Ubuntu 双系统vmware 虚拟机安装 Ubuntu相关的词。现在的机器基本都是 UEFI GPT 引导模式安装逻辑和十年前 BIOS MBR 时代完全不同。核心区别在于UEFI 模式下每个操作系统的引导文件放在专门的 EFI 分区里由主板固件决定优先启动哪个MBR 时代是一个主引导记录管所有系统两种风格完全不同。安装双系统的正确姿势我按步骤过一遍先在 Windows 里关掉快速启动Fast Startup。这个选项默认开启关机时其实没有真正关机而是进入休眠状态会导致硬盘分区被锁住Ubuntu 安装器无法正常识别 Windows 分区。在 Windows 磁盘管理器里压缩出一块空闲空间。右键要压的盘选择压缩卷腾出 100G 以上的未分配空间。不要在压缩后立刻在 Windows 里新建分区留成未分配即可。制作 Ubuntu 启动 U 盘进 BIOS 关掉 Secure Boot。这个问题后面还会说这里先记住不及时关 Secure Boot装完系统可能直接黑屏。安装器选Install Ubuntu alongside Windows Boot Manager与 Windows 共存或者选手动分区。自动共存模式适合省心但要改分区布局必须选手动。安装完成后重启如果直接进了 Ubuntu 而不是引导菜单不要慌进 BIOS 把启动顺序里的 Ubuntu 相关项调前或者用 efibootmgr 命令调整。这一套流程里最让人摸不着头脑的是 Secure Boot。它是主板固件层面的安全机制只允许加载经过签名的启动程序。Ubuntu 官方内核和 GRUB 是签过名的所以理论上可以兼容 Secure Boot但显卡驱动、虚拟机内核模块这类第三方组件经常没有签名开着 Secure Boot 会出现各种诡异问题——比如装完 N 卡驱动后卡在登录界面循环。我的建议是装机时直接关掉效率优先。双系统装好以后最大的坑是引导恢复。Windows 系统更新经常重写 EFI 引导项把 GRUB 从启动菜单里挤掉开机直接进 Windows反过来Ubuntu 装完也有可能盖掉 Windows 的引导入口。如果你手头有 Ubuntu 启动 U 盘修复引导用一条命令就能搞定sudo add-apt-repository ppa:yannubuntu/boot-repair sudo apt update sudo apt install boot-repair boot-repair图形界面出来后点Recommended repair它会自动检测 EFI 分区、重装 GRUB、把 Windows 引导项加回去。这个工具我修复过几十次机器绝大多数引导问题都能用它解决。手边没有 U 盘的话也可以试着用 efibootmgr 手动操作但新手不建议直接用这个命令折腾参数比较复杂容易越弄越糟。双系统还有一个时间错乱的小毛病Windows 默认把主板硬件时间当作本地时间Linux 则当作 UTC 时间。装上双系统后切换系统日期总差 8 小时。修复的办法是在 Ubuntu 里执行timedatectl set-local-rtc 1意思就是告诉系统硬件时钟保存的是本地时间不是 UTC。这样 Windows 和 Ubuntu 就不会再互相改时间了。这个细节在搜索引擎里天天有人问属于双系统标配的坑装完顺手就改掉。4. 装完系统只是开始驱动、输入法与开发环境的恢复清单系统装完、能开机进桌面不少人觉得大功告成其实这个时刻才是工作量真正开始的时候。从热搜词里的密集程度就能看出来Ubuntu 安装 N 卡驱动、Ubuntu 装微信、搜狗输入法、Docker、VSCode、Conda、Anaconda3 卸载重装、环境变量配置错误这些词几乎是把装系统之后最常翻车的环节完整列出来了。先说显卡驱动这是 Ubuntu 用户最容易栽的跟头。默认安装镜像用的是开源驱动 nouveau能点亮屏幕、跑起来但打游戏、跑深度学习、外接显示器都会有问题。装 N 卡闭源驱动的正规路子不是去官网下 .run 文件官方 .run 手动安装容易和系统自带的 Nouveau 冲突装完黑屏的大有人在而是直接用系统自带的方式sudo ubuntu-drivers devices sudo apt install ubuntu-drivers第一条命令列出系统检测到的可用驱动版本第二条把推荐版本装上。装完reboot然后验证nvidia-smi能看到显卡型号和驱动版本说明驱动正常工作了。如果输出command not found多半是驱动没装上或者 Secure Boot 开着导致内核模块加载失败。这时候回去检查 Secure Boot 状态关闭后重新modprobe nvidia即可。输入法同样是重灾区。Ubuntu 中文输入法热搜榜上常年有搜狗和 ibus 之争。我的经验是搜狗输入法要稳定运行版本匹配是灵魂。从搜狗官网下载的 .deb 包依赖 fcitx 框架安装前先装好sudo apt install fcitx fcitx-config-gtk sudo dpkg -i sogoupinyin_版本号_amd64.deb sudo apt -f install # 修复依赖装完以后在系统设置-区域与语言-输入法里把 fcitx 设为默认框架或者运行im-config选择 fcitx然后注销重启。这条链路缺一步都会出问题最常见的是输入法图标不出现或者候选词框乱码。要是实在折腾不好退一步用系统自带的ibus-libpinyin或者fcitx5-chinese-addons干净无依赖问题日常打字完全够用。微信这种 Windows-only 的应用在 Linux 里只能走兼容层。现在最常用的路子是 deepin-wine 版本GitHub 上有打包好的安装脚本下载 deb 包直接装然后依赖的 wine 运行库会自动配置好。装完以后首次启动特别慢要等它初始化 wine 容器这是正常现象耐心等几分钟。搜狗输入法和微信是国人 Linux 桌面版绕不过去的两座大山我的建议是别追求完美能用就行。开发环境这一块VSCode、Docker、Conda 是三大高频词。VSCode 最省事的方式是从官网下 .deb 包双击安装它会自动注册到apt源里后续更新直接sudo apt upgrade就能走。Docker 用官方脚本装curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh sudo usermod -aG docker $USER把自己加进 docker 组省得每次敲sudo docker。装完之后记得把软件源换成国内镜像加速拉取镜像否则第一次docker pull就能让你怀疑人生。Conda 建议装 Miniconda 而不是 Anaconda后者预装了几百个包大部分人一辈子用不到几个还占掉好几个 G 磁盘。Miniconda 装完常用环境按需创建即可。装 Conda 之后要特别注意 PATH 环境变量的问题——它会在.bashrc末尾追加初始化代码如果你同时还有系统 Python、pyenv、虚拟环境三者叠在一起非常容易把 PATH 搞乱后面具体说。5. 重装后最容易翻车的五个细节与完整排查链路按我的经验重装系统当周最容易出现下面几个问题每一个我都踩过把排查链路完整列出来比直接甩答案更有用。5.1 环境变量配置错误导致系统命令全线失效热搜词里有ubuntu 环境变量配置错误和如何卸载重装低版本 python这两个往往是一起发生的。比如你往/etc/environment或~/.bashrc里加了一行PATH/usr/local/python3/bin:$PATH结果路径没写对或者手滑把原来的$PATH覆盖了重启终端后ls、sudo这些基础命令全部提示command not found。这时候不要慌正确姿势是输入完整路径调用命令把 PATH 修回来。比如/usr/bin/sudo /usr/bin/nano ~/.bashrc先打开.bashrc把错误的 PATH 行删掉或改对然后执行source ~/.bashrc重新加载。如果连想打开文件编辑器都费劲用export PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin先还原本来的搜索路径再用命令修复。这条排查链路的核心原则就是系统命令缺失不是文件被删了只是 shell 找不到路径恢复 PATH 是第一步永远先从这条路查起。Python 版本杂乱的坑也一样。Ubuntu 系统自带的 Python 被 apt 深度依赖不要动它。要装新版 Python用deadsnakesPPA 或者源码编译安装到/usr/local配合 pyenv 做版本隔离这才是正路。直接卸载系统 Python 的后果是桌面环境、软件包管理工具全盘崩溃我见过不止一个人把系统搅黄了再来重装。5.2 SSH 连不上先查服务、再查防火墙、最后查网卡重装后 SSH 连不上十个有九个是根本没装 OpenSSH 服务端。Ubuntu 桌面版默认只装了客户端没有sshd。排查链路应该是ps aux | grep sshd # 看进程是否存在 sudo systemctl status ssh # 看服务状态 sudo apt install openssh-server sudo systemctl enable --now ssh服务起来了还连不上查防火墙sudo ufw status verbose sudo ufw allow 22/tcp还不行确认 IP 是不是变了。重装系统后 DHCP 分配的新地址和旧地址往往不同用ip addr看当前地址再用新地址重新连接。最后一步排查网卡驱动RTL 系列网卡Realtek 的 8125、8153 之类的芯片很常见在 Ubuntu 下偶尔不被内核原生支持需要装r8168-dkms这类第三方驱动通过lspci -k看内核模块是否加载。5.3 WSL 用户掉进字体和环境的坑热搜词里wsl ubuntu 写代码最推荐的字体接近 macos 的体验很有意思说明用 WSL 写代码的人越来越多了。WSL 里字体渲染确实和原生 Linux 有差别主要原因是 Windows 终端对等宽字体的支持逻辑不同。我的推荐是两类一类是Sarasa Term SC更纱黑体中文和英文宽度对齐看代码注释舒服另一类是JetBrains MonoWindows Terminal 里渲染效果接近 macOS 的圆润感适合写代码。设置方式很简单在 Windows Terminal 的配置文件里把字体改成Sarasa Term SC或JetBrainsMono NF然后保存重开。这个细节看着小但长期盯着编辑器的人都知道字体渲染对体验影响有多大。WSL 还有个常见问题是/mnt/c/下面文件权限全是 777、读写巨慢。这是因为 Windows 和 Linux 文件系统的访问方式完全不同跨文件系统读写的性能损耗是实打实的。实际体验下来代码仓库放在 WSL 的 Linux 文件系统里比如~/projects通过/mnt/c访问 Windows 文件只保留给必须的场景性能差距能明显感觉到。5.4 软件源配置错误导致 apt 全家失效重装后第一件事就是换软件源但很多人直接把网上搜的Ubuntu 换清华源那段代码复制进/etc/apt/sources.list忘了确认自己的系统版本代号。Ubuntu 24.04 的代号是noble22.04 是jammy20.04 是focal不同版本对应不同的源路径。把 22.04 的源写进 24.04 里运行apt update会报 404 Not Found只能查版本然后改回来lsb_release -c # 查看当前系统代号修正后执行sudo apt update sudo apt full-upgrade验证。这个坑完全可以通过核对代号来避免但每年都有大量人栽在上面属于重装后最高频的尴尬问题。5.5 显卡驱动与桌面登录循环装完 N 卡驱动重启卡在登录界面或者登录后又弹回登录界面这是 Ubuntu 社区最经典的翻车现场。原因通常是内核模块加载失败或者 nouveau 没有完全禁用。排查链路分三步先在登录界面按Ctrl Alt F2进入纯命令行终端登录后查驱动状态nvidia-smi journalctl -b | grep -i nvidia看到NVRM: failed to initialize这类错误一般是内核版本和驱动版本不匹配。此时sudo apt purge nvidia-*卸载重装换成 recommended 版本绝大多数都能解决。如果依然不行检查一下你是不是开着 Secure Boot——第三方驱动没签名内核出于安全策略拒绝加载问题表现就是驱动异常和登录循环。6. 重装这件事我用无数次折腾换来的几点体会我自己重装 Ubuntu 的次数已经数不过来了从最早的 Ubuntu 8.04 光盘装到后来 U 盘安装、PXE 网络安装、虚拟机克隆踩过的坑没有一百也有八十。说几个重装之外的经验权当给看完文章的朋友提个醒。分区策略是整个重装工程里最重要的决定没有之一。/home独立分区这个习惯是我经历过多次系统崩溃但数据完好的实例后养成的。只要数据还在重装永远只是小手术。反过来数据跟着系统一起去重装就从技术问题升级为灾难现场了。安装过程中不要勾选为图形或无线硬件安装第三方软件尤其是不想折腾 N 卡的人。这个选项会在系统预装阶段就加载闭源驱动但往往版本不是最新的后续更新时容易和其他软件包冲突。我的做法是装完系统手动装驱动全流程可控。软件环境这件事能写进 Ansible 或者脚本的东西就不要手动做。我第一次重装后手动配环境花了一整天后来花了半小时写了个一键配置脚本把 apt 源、常用软件包、git 配置、SSH 密钥部署全自动化了再后来每次重装跑一遍脚本就能恢复到 90% 的工作环境。这种做法一开始会觉得麻烦但重装过一次两次之后你就会发现它是回本最快的投资。最后分享一个算不上技巧但非常有用的小习惯每次装完系统、配置好环境之后sudo apt list --manual-installed导出当前手动安装的软件清单存到云端。下次不管哪台机器重装对照这个清单恢复环境就不会漏东西了。这套东西不花时间但救了我太多次。
返回列表