
1. 从“双系统”到“单Ubuntu”的抉择为什么我选择重装而非修复最近在折腾一台老笔记本上面跑着Windows 11和Ubuntu 20.04的双系统。这台机器原本是我的主力开发机但用了几年后Ubuntu那边的问题开始层出不穷先是引导莫名其妙地坏掉每次开机都得进BIOS手动选接着是内核升级到某个版本后NVIDIA驱动和CUDA环境彻底崩了重装了几次都搞不定最要命的是当初分区时给/home的空间留得太少现在被各种项目代码和Docker镜像塞得满满当当天天弹磁盘空间不足的警告。我相信很多用双系统的朋友都遇到过类似的情况。双系统就像一个合租的公寓Windows和Ubuntu各占一个房间。起初相安无事但时间一长难免会因为“公共区域”比如EFI引导分区的使用权或者某个室友比如Windows的一次大版本更新擅自改了大门锁引导管理器导致另一位室友Ubuntu有家难回。更常见的是当初分区规划不合理给Ubuntu的“房间”太小等你想扩容时发现两边的“承重墙”分区表动起来风险极高一不小心就可能数据全丢。面对这些“历史遗留问题”我评估了所有选项修复GRUB引导、调整分区大小、甚至尝试将Ubuntu迁移到新硬盘。但仔细一想修复引导可能只是治标下次Windows更新可能又复现调整分区涉及数据迁移耗时且风险大而老旧的Ubuntu 20.04Focal Fossa本身也即将在2025年4月结束标准支持很多软件源里的版本已经比较旧了。最终我决定不如推倒重来进行一次彻底的重装和重新规划。这次重装的目标很明确第一要有一个干净、稳定、可控的Ubuntu 20.04系统虽然它较老但胜在稳定且对我手头一些遗留项目的兼容性更好第二要彻底解决分区规划问题为/、/home、甚至未来可能的/var用于Docker/数据库预留充足且独立的空间第三要建立一套可重复、可文档化的基本配置流程方便未来再次部署或迁移。如果你也受困于一个混乱的双系统环境或者想从头搭建一个更合理的Linux工作站那么我这次从备份、制作启动盘、分区规划、安装到基础配置的完整过程或许能给你提供一个详细的参考。2. 重装前的关键准备数据备份与启动盘制作重装系统最令人头皮发麻的永远不是安装过程本身而是安装前那一步——备份。很多人栽跟头就栽在自以为“这个目录不重要”结果重装完发现某个配置文件丢了工作流直接瘫痪。我的原则是凡是不能通过apt install或git clone一键恢复的东西都必须备份。2.1 系统性数据备份策略对于Ubuntu系统需要备份的数据主要分为以下几类我采用了不同的策略用户个人文件这是核心中的核心。直接备份整个/home/你的用户名目录。但要注意里面有些缓存和临时文件如~/.cache,~/.thumbnails体积巨大且无用可以用rsync进行排除。# 示例将家目录备份到外部硬盘假设挂载在/media/backup rsync -av --progress --exclude.cache --exclude.thumbnails /home/你的用户名/ /media/backup/ubuntu_home_backup/这个命令保留了文件权限、符号链接等所有属性-a是归档模式-v是显示进度。应用程序配置与数据这散落在~/.config和~/.local目录下。我建议整体备份~/.config因为这里集中了大多数GUI和CLI工具的设置。对于特定软件如Docker需要额外备份/var/lib/docker需要root权限或使用docker save导出镜像对于数据库如PostgreSQL/MySQL务必使用pg_dump或mysqldump进行逻辑备份。已安装软件包列表重装后要快速恢复开发环境重新安装所有软件包是关键。Ubuntu提供了很方便的工具。# 在旧系统上生成已安装软件包列表 dpkg --get-selections ~/package_list.txt # 备份APT的源列表这样新系统可以直接用 sudo cp -r /etc/apt/sources.list* /media/backup/ # 备份GPG密钥对于一些第三方源很重要 sudo cp -r /etc/apt/trusted.gpg* /media/backup/系统关键配置检查/etc目录下你修改过的文件例如网络配置/etc/netplan/、SSH主机密钥/etc/ssh/、Samba配置等。我通常直接备份整个/etc目录到一个压缩包以备不时之需。sudo tar -czvf /media/backup/etc_backup.tar.gz /etc/注意备份的最佳位置是另一块物理硬盘、NAS或者大容量U盘。千万不要把备份文件放在你即将要格式化的Ubuntu分区里也不要放在可能会被Windows安装程序影响的分区里比如那个小容量的EFI系统分区。2.2 启动盘制作工具的选择与实操有了备份下一步是制作Ubuntu 20.04的安装启动盘。这里有几个常见选择RufusWindows、Etcher跨平台、Ubuntu官方推荐的dd命令Linux/macOS。我因为在Windows环境下操作所以选择了老牌且功能强大的Rufus。为什么是Rufus相比其他工具Rufus对UEFI/BIOS启动模式、分区方案GPT/MBR的处理更直观还提供了“持久化存储”等高级选项虽然本次用不上。最重要的是它在处理Windows和Linux双系统引导相关问题时经验更丰富。制作步骤下载镜像从Ubuntu官网或国内镜像站如阿里云、清华源下载ubuntu-20.04.6-desktop-amd64.iso。务必核对SHA256校验和确保镜像完整。准备U盘找一个容量≥8GB的U盘里面的所有数据将被清空请提前转移。运行Rufus以管理员身份运行Rufus设备选择你的U盘。关键配置引导类型选择点击“选择”找到你下载的ISO文件。分区类型必须选择GPT。现代电脑基本都是UEFI启动GPT分区表是标准。即使你是旧电脑用BIOS启动Rufus也会自动处理兼容性。目标系统类型选择UEFI (非CSM)。这能确保安装程序以纯UEFI模式启动避免后续引导混乱。格式化选项文件系统保持默认的FAT32即可。卷标可以起个名字如“UBUNTU_20.04_INSTALL”。开始写入点击“开始”Rufus会提示“以ISO镜像模式写入”点击“确定”。等待进度条走完启动盘就做好了。实操心得制作完成后不要急着重启。最好在Windows里再次打开U盘确认里面有一些EFI目录和.efi文件这证明它确实是一个UEFI启动盘。如果U盘里只有一个ISO文件那说明制作方式可能错了。3. 分区规划为未来五年的使用留足余地分区是重装过程中最具技术含量也最影响日后使用体验的一环。很多人安装时直接使用“安装Ubuntu与Windows共存”的自动选项这往往会导致分区不合理。这次我们选择“其他选项”进行手动分区。3.1 理解Ubuntu的必要分区对于一个UEFI启动的现代系统Ubuntu通常需要至少两个分区EFI系统分区这是引导分区。如果你的电脑上已经有一个Windows系统那么它已经创建了一个EFI分区通常100MB-500MB。强烈建议重用这个已有的EFI分区不要新建。因为一台电脑只需要一个EFI分区多个反而会引起引导冲突。我们只需要在安装时将这个已有的EFI分区设置为“用于EFI系统分区”即可。根分区挂载点为/这是系统核心所在存放操作系统文件、系统级安装的软件。我建议分配50GB - 100GB。对于20.0450GB足够但考虑到日后安装大型开发工具或容器预留大一些更省心。除了这两个必需分区我强烈建议创建以下独立分区这是让系统长期保持清爽的关键Home分区挂载点为/home存放用户所有个人文件、配置、桌面环境设置等。这是分区大小的重中之重。我的原则是在硬盘总容量允许的情况下尽可能把剩余空间的大部分都给/home。比如一块512GB的硬盘我会给/home分配300GB以上。这样即使系统盘(/)被日志或临时文件塞满也不会影响你的个人数据和工作。交换空间在物理内存RAM充足的今天比如≥16GB交换文件swap file比独立的交换分区swap partition更灵活。Ubuntu 20.04安装器默认会创建一个交换文件。因此我们可以不创建独立的交换分区节省一个分区条目。如果内存较小8GB可以考虑创建一个大小为内存1.5-2倍但一般不超过16GB的交换分区。3.2 实战分区方案以512GB SSD为例假设我的硬盘是512GB已有一个128GB的Windows NTFS分区C盘和一个已有的100MB EFI分区。现在我要为Ubuntu分配剩余的空间。在安装程序分区界面找到代表空闲空间的条目。创建根分区点击“空闲空间” - “” - 新建分区。大小80GB。新分区的类型主分区逻辑分区也可以但主分区更简单。位置空间起始位置。用于Ext4 日志文件系统。挂载点/。创建Home分区再次点击剩余的空闲空间 - “”。大小剩余的所有空间大约320GB。类型主分区。位置空间起始位置。用于Ext4 日志文件系统。挂载点/home。设置引导安装器这是最关键的一步。找到列表中那个已有的、约100MB的EFI系统分区类型为fat32可能已有Windows或Boot标签。不要格式化它只需在“用于”一栏将其设置为“EFI系统分区”。在分区界面最下方“安装启动引导器的设备”下拉菜单中选择这个EFI分区对应的设备例如/dev/nvme0n1p1。这告诉安装程序将GRUB引导加载器安装到与Windows共享的EFI分区中。踩坑警示“安装启动引导器的设备”如果选错了比如选成了整个硬盘/dev/sda可能会导致Windows引导被覆盖或出现其他问题。务必认准那个小的FAT32格式的EFI分区。4. 安装过程详解与首次启动后的引导修复分区设置好后安装过程就比较顺畅了。选择时区、键盘布局、创建用户名和密码记住这个密码它是你sudo的凭证然后点击“现在安装”再确认一次分区更改接下来就是等待。安装完成后系统会提示重启。这时有一个重要动作在重启提示出现时先不要急着点“现在重启”而是应该手动拔掉U盘。然后点击重启。这样可以避免电脑再次从U盘启动直接进入硬盘引导。4.1 处理可能出现的引导问题重启后理想情况是直接进入GRUB菜单让你选择启动Ubuntu还是Windows。但如果只直接进了Windows说明GRUB没有正确接管引导。这是双系统安装后最常见的问题。解决方案从Ubuntu Live USB启动修复GRUB再次用之前制作的Ubuntu安装U盘启动电脑进入“试用Ubuntu”模式。打开一个终端依次执行以下命令# 1. 查看磁盘分区找到你的Ubuntu根分区例如 /dev/nvme0n1p5 sudo fdisk -l # 或使用 lsblk 命令查看更清晰 lsblk -f挂载你的Ubuntu根分区和EFI分区# 假设根分区是 /dev/nvme0n1p5 EFI分区是 /dev/nvme0n1p1 sudo mount /dev/nvme0n1p5 /mnt sudo mount /dev/nvme0n1p1 /mnt/boot/efi # 注意如果/mnt/boot/efi不存在需要先创建绑定一些关键目录为chroot做准备for i in /dev /dev/pts /proc /sys /run; do sudo mount --bind $i /mnt$i; done切换到被挂载的系统环境sudo chroot /mnt重新安装并配置GRUB# 重新安装GRUB到EFI分区 grub-install /dev/nvme0n1p1 # 更新GRUB配置这会自动探测到Windows引导管理器 update-grub退出chroot并重启exit sudo reboot重启后拔掉U盘应该就能看到熟悉的GRUB选择菜单了。5. 系统基础配置打造高效可用的开发环境成功进入全新的Ubuntu 20.04桌面后先别急着装软件。有几项基础配置做好了能极大提升后续的使用体验和效率。5.1 网络与软件源加速刚装好的系统软件源是国外的更新和安装软件速度很慢。第一步就是更换为国内镜像源。备份原列表sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak编辑源列表可以使用sudo nano /etc/apt/sources.list或者图形化工具“软件和更新”。替换内容将文件里所有archive.ubuntu.com和security.ubuntu.com的网址替换为国内镜像站地址例如阿里云mirrors.aliyun.com或清华mirrors.tuna.tsinghua.edu.cn。以阿里云为例替换后的链接类似http://mirrors.aliyun.com/ubuntu/。更新缓存执行sudo apt update sudo apt upgrade -y进行首次全面更新。5.2 恢复备份的数据与环境现在开始把备份的东西挪回来。恢复个人文件将备份的/home目录内容拷贝回新的家目录。注意文件权限可以用rsync或cp -a来保留权限。sudo rsync -av /media/backup/ubuntu_home_backup/ /home/你的新用户名/ # 可能需要修改一下文件所有者 sudo chown -R 你的新用户名:你的新用户名 /home/你的新用户名恢复软件包列表将之前备份的package_list.txt和sources.list文件放到对应位置然后批量安装。# 恢复源列表如果你觉得新系统的源没问题这步可略过 sudo cp /media/backup/sources.list* /etc/apt/ # 导入之前备份的软件包选择状态 sudo dpkg --set-selections /media/backup/package_list.txt # 安装所有标记为“install”的软件包 sudo apt-get dselect-upgrade注意dselect-upgrade会安装列表中的所有包但有些包可能依赖于旧系统的特定库版本在新系统中可能冲突。更稳妥的方法是将package_list.txt作为参考手动分批安装核心工具如build-essential,git,docker.io等而不是一次性全部恢复。5.3 基础开发工具链安装一个干净的开发环境需要以下基础组件# 1. 构建基础工具编译器、库等 sudo apt install -y build-essential cmake git curl wget # 2. 版本控制工具 sudo apt install -y git gitk meld # 3. 网络工具 sudo apt install -y net-tools openssh-server # 4. 启用SSH服务方便远程登录 sudo systemctl enable --now ssh # 5. 安装Python3和pip20.04默认已安装Python3.8 sudo apt install -y python3-pip python3-venv # 将pip升级到最新并设置国内源 pip3 install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple5.4 显卡驱动与性能调优如果你的电脑有独立显卡特别是NVIDIA显卡安装闭源驱动能获得更好的性能和兼容性。检查显卡型号lspci | grep -i vga使用Ubuntu附加驱动这是最简单的方法。打开“软件和更新” - “附加驱动”选项卡系统会自动检测可用的专有驱动选择一个带“proprietary”和“tested”标记的推荐版本安装即可。或者使用命令行安装以NVIDIA为例# 添加显卡驱动PPA可选通常附加驱动里的版本足够 sudo add-apt-repository ppa:graphics-drivers/ppa sudo apt update # 查找推荐的驱动版本 ubuntu-drivers devices # 安装推荐驱动例如nvidia-driver-535 sudo apt install -y nvidia-driver-535安装后重启sudo reboot。重启后使用nvidia-smi命令验证驱动是否安装成功。6. 桌面环境与常用软件配置基础系统就绪后我们来配置桌面环境和安装必备软件让系统真正好用起来。6.1 GNOME桌面优化如果使用默认桌面Ubuntu 20.04默认使用GNOME 3.36。为了提升效率可以安装一些扩展和工具。安装GNOME Tweaks这是一个强大的桌面调整工具。sudo apt install -y gnome-tweaks安装后在“优化”中可以开启“最小化点击”、调整字体、修改窗口控制按钮位置等。安装扩展管理器GNOME扩展可以极大增强功能。推荐通过Flatpak安装扩展管理器这样更安全。# 安装Flatpak支持 sudo apt install -y flatpak flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo # 安装扩展管理器 flatpak install flathub com.mattjakeman.ExtensionManager在扩展管理器中我必装的扩展有Dash to Dock或Dash to Panel将Dash栏变成类似macOS Dock或Windows任务栏的样子。Arc Menu提供一个更强大的开始菜单。Clipboard Indicator剪贴板历史管理。GSConnect与手机KDE Connect协议连接实现文件传输、通知同步。6.2 核心生产力软件安装我习惯使用APT、Snap和Flatpak混合安装原则是优先APT其次Flatpak最后Snap。因为APT包最稳定与系统集成度最高Flatpak沙盒化版本新且独立Snap在某些场景下启动稍慢。# 1. 浏览器直接安装.deb包以获得最佳性能 wget -O google-chrome-stable_current_amd64.deb https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb sudo apt install ./google-chrome-stable_current_amd64.deb # 2. 办公套件 LibreOffice (APT) sudo apt install -y libreoffice libreoffice-style-breeze # 3. 通讯工具 Slack (Flatpak) / Telegram (Flatpak) flatpak install flathub com.slack.Slack flatpak install flathub org.telegram.desktop # 4. 媒体播放器 VLC (APT) sudo apt install -y vlc # 5. 截图工具 Flameshot (APT) 比默认的强大太多 sudo apt install -y flameshot # 安装后可以去“设置”-“键盘快捷键”里设置一个快捷键如CtrlAltA来启动区域截图。 # 6. 终端增强 Zsh Oh My Zsh (通过git安装) sudo apt install -y zsh sh -c $(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh) # 安装powerlevel10k主题 git clone --depth1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k # 然后编辑 ~/.zshrc 设置 ZSH_THEMEpowerlevel10k/powerlevel10k6.3 开发环境快速搭建对于开发者可以快速搭建一些通用环境。Docker通过官方仓库安装版本比Ubuntu自带的新。# 添加Docker官方GPG密钥和仓库 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg echo deb [arch$(dpkg --print-architecture) signed-by/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable | sudo tee /etc/apt/sources.list.d/docker.list /dev/null sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io # 将当前用户加入docker组避免每次用sudo sudo usermod -aG docker $USER # 需要注销重新登录生效Visual Studio Code微软官方提供了.deb仓库。wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor packages.microsoft.gpg sudo install -o root -g root -m 644 packages.microsoft.gpg /etc/apt/trusted.gpg.d/ sudo sh -c echo deb [archamd64 signed-by/etc/apt/trusted.gpg.d/packages.microsoft.gpg] https://packages.microsoft.com/repos/vscode stable main /etc/apt/sources.list.d/vscode.list sudo apt update sudo apt install -y code7. 系统维护与长期使用建议系统配置得差不多了最后分享几个让Ubuntu稳定、长寿的习惯。7.1 定期清理与更新Ubuntu的APT包管理器会缓存下载的.deb包时间长了会占用不少空间。# 定期执行以下命令进行清理和更新 sudo apt update sudo apt upgrade -y sudo apt autoremove -y # 删除自动安装且不再需要的包 sudo apt autoclean # 清理已下载的旧版本软件包缓存对于Snap和Flatpak应用也有类似的清理命令# 清理Snap旧版本 snap list --all | grep disabled | awk {print $1, $2} | while read snapname revision; do sudo snap remove $snapname --revision$revision; done # 清理Flatpak未运行的应用和运行时 flatpak uninstall --unused7.2 备份策略自动化吃过亏之后我设定了自动备份。最简单的就是使用cron定时任务执行rsync脚本将/home目录同步到NAS或外置硬盘。也可以使用更专业的工具如Deja DupUbuntu自带或BorgBackup进行增量备份。7.3 监控系统健康安装htop可以方便地查看实时系统资源占用sudo apt install htop。使用df -h定期查看磁盘使用情况特别是根分区/。如果/分区使用率超过80%就要开始注意清理日志/var/log或临时文件了。7.4 关于内核升级的特别提醒从网络热词看到有人问“ubuntu20.04适配6.8内核吗”。Ubuntu 20.04 LTS默认提供的是5.4内核并通过HWEHardware Enablement堆栈提供更新的内核如5.15。你可以安装linux-generic-hwe-20.04来获取。但是手动安装非常新的主线内核如6.8虽然可能支持新硬件但会脱离Ubuntu官方的测试和保障范围可能导致驱动不兼容、系统不稳定。对于生产或稳定开发环境强烈建议使用Ubuntu官方仓库提供的内核版本。如果确实需要新内核特性应考虑升级到更新的Ubuntu LTS版本如22.04或24.04。经过这样一轮从规划到配置的完整操作你得到的不仅仅是一个重装后的Ubuntu系统而是一个布局合理、基础扎实、易于维护的工作环境。双系统带来的隔离性加上Ubuntu本身的稳定性足以应对未来数年的开发和学习需求。整个过程中最关键的其实是第一步的备份和分区规划多花点时间思考能避免日后无数的麻烦。当一切就绪打开终端看到那个熟悉而又崭新的命令行提示符时那种对系统完全掌控的感觉才是折腾Linux最大的乐趣所在。