资讯动态

Arch Linux与Windows双系统安装指南:从UEFI分区到GRUB引导全解析

发布时间:2026/9/16 23:21:30 来源:尧图企业网站定制
1. 动手前必须想明白的三件事分区、启动模式与资料安全聊Arch Linux双系统网上教程一抓一大把可真正能一次装完不返工的人真不多。我这些年帮人装机、自己也反复折腾过好几台笔记本和台式机发现绝大多数翻车现场都不是死在pacstrap和grub-install这些核心命令上而是死在动手之前——很多人完全没有搞懂Windows和Arch Linux之间是怎么共处的上来就急着分区结果分完区Windows起不来、或者Arch装完找不到Windows引导最后只能抱着PE盘挨个试。所以这篇东西我不会一上来甩命令而是先花点篇幅把几个关键概念说透。你只要搞懂分区表、EFI启动、BitLocker和快速启动这几个东西后面所有步骤都是可以机械执行的流程。1.1 为什么分区方案直接决定成败现代电脑基本都是UEFI引导加GPT分区表这和十年前那套BIOS加MBR的玩法完全是两个逻辑。GPT没有传统主分区的数量限制Windows和Linux各自用自己的一堆分区互不干扰但两者必须共享一个东西——EFI系统分区也就是ESP。ESP分区的本质是启动文件存放地。Windows的Boot Manager、GRUB、Linux内核实际上都往这个分区里写文件开机时主板固件通过NVRAM变量找到该执行哪个启动项。很多教程会教你装Arch时重新建一个512MB的ESP但如果你是在双系统环境里操作更省事、更稳的做法是直接复用Windows已有的ESP分区什么都不用建只要挂载好、往里写文件就行。这里有一个非常容易踩的坑Windows自带的ESP分区往往只有100MB有些品牌机甚至只有33MB到50MB。Arch的默认内核加GRUB文件塞进去其实勉强够用但如果你后面装了带多个微码的镜像、备份了grub.cfg、又放了自定义主题空间很容易就被塞满。我自己就遇到过grub-mkconfig写入时磁盘空间不足的报错当时整个人愣在终端前。所以如果你手头是1T或更大容量的硬盘我建议在Windows里给ESP腾出至少512MB的空间或者直接在磁盘管理里把现有ESP扩大。具体怎么操作后面分区环节会说。另一个需要提前认识的角色是WinRE DRV分区也就是Windows恢复环境的分区。不要看着它藏在一堆OEM分区里就手痒删掉它的作用是系统崩溃时提供高级修复选项而且很多品牌机联想、戴尔、华硕的启动恢复工具也依赖它。装Arch时遇到这套东西最好的处理方式就是绕着走完全不碰。1.2 先处理Windows侧的隐藏雷区很多人卡在最开始一步磁盘管理里右键C盘想压缩卷结果压缩空间不可用或者提示无法锁定系统所在分区。这不是因为你操作不对而是Windows默认开启的几个功能占用了磁盘尾部导致压缩卷算法算不出足够空间。第一批要关闭的是快速启动和休眠。快速启动是Windows 8以后默认打开的功能它把内核会话关进休眠文件里关机并非真正关机。这个功能会让NTFS分区处于一种不干净的状态双系统下Linux写入NTFS分区时极易损坏文件Arch Live环境访问Windows分区时也能感受到明显的只读警告。处理办法管理员PowerShell里执行powercfg /h off这条命令同时会删除休眠文件省出几个GB空间。接下来把控制面板里的快速启动关闭电源选项 - 选择电源按钮的功能 - 取消勾选启用快速启动。不关的话你从GRUB菜单进入Windows后可能遇到分区拒绝挂载或者开机进入自动修复循环。第一批除了快速启动还有虚拟内存和系统保护。虚拟内存的页面文件pagefile.sys占了C盘好几个G而且它默认不允许被压缩卷跨过磁盘管理在计算可压缩大小时会把它当成分区尾部的一个硬障碍。建议临时把虚拟内存改到D盘或者设置成无分页文件装完Arch可以改回来不影响Arch。系统保护同理右键C盘 - 配置 - 禁用系统保护并删除还原点这能释放掉一些隐藏的系统卷影副本。把这些全部处理完重启一次再进磁盘管理右键C盘压缩卷基本就能看到可压缩空间变得正常了。根据我这些年的经验压缩卷时Windows默认给的值往往偏保守——你可以看到可压缩空间明显小于实际剩余空间这不是Bug而是它把最后几个GB留给碎片整理、元数据移动用的。我的建议是压缩时不要追求极限留出大约5%到10%的余量反正后面还要靠这个空间装Arch压缩小了也无所谓剩余空间就留给Windows自己用。这里还得额外提醒一句如果你用的是联想、戴尔这些预装机器打开磁盘管理可能会看到一堆奇怪的分区有EFI、MSR也就是Microsoft Reserved分区、WinRE DRV、联想恢复分区等等。处理这些分区的原则是——除了恢复分区和OEM隐藏分区不要动其他保持原样Windows和Arch共存完全没有问题。唯一可能出现冲突的情况是你自己拿分区助手工具去删、去合并这些分区那才是真的容易搞坏引导。動手之前最值得做的备份工作是把重要资料复制到移动硬盘或网盘并在Windows里创建一个系统还原点。这不是危言耸听——分区和引导操作本身就属于高风险操作哪怕你完全按教程来也不排除品牌机的固件出什么幺蛾子。1.3 一个可复用的分区布局参考在动手之前先把最终的分区目标画出来这样后面在fdisk里才知道每一步在干嘛。下面是我在1T SSD上比较常用的一套布局兼顾了日常使用和后续扩展分区大小文件系统挂载点说明/dev/nvme0n1p1Windows自带FAT32/bootESP分区复用/dev/nvme0n1p2Windows自带NTFS不挂载MSR或恢复分区/dev/nvme0n1p3Windows系统NTFS不挂载C盘/dev/nvme0n1p4Windows自带NTFS不挂载WinRE DRV保留/dev/nvme0n1p5100GBext4/根分区装系统/dev/nvme0n1p6剩余ext4/home家目录swap分区/swapfile可选——建议直接用swapfileswap这里多说一句早期教程都喜欢分一个swap分区大小等于内存两倍现在固态硬盘时代真没必要了。Arch默认就支持swapfile你装完系统后随时可以创建和调整不需要预先在fdisk里留一块区域。而且swapfile对分区布局完全透明以后想删就删不牵扯任何分区表操作。2. 制作安装介质与顺利进入Live环境分区问题想清楚之后就是制作安装U盘。这一步听起来简单实际上翻车率也不低尤其是华硕、联想、神州等品牌机U盘引导这一关就可能把你挡在门外。2.1 用Ventoy做多系统启动盘省掉反复刻录我试过dd直接写ISO到U盘、试过Rufus、也试过balenaEtcher但目前最省心的方案是Ventoy。这工具做了一个引导分区你只需要把多个ISO文件直接拷贝进U盘的数据分区开机选择要启动的ISO即可。好处显而易见如果你同时还想试试Ubuntu、Fedora或者Windows PE不用反复格式化U盘直接往U盘里拖ISO就能引导。具体操作去Ventoy官网下载安装包Windows下双击exe选中目标U盘点击安装。第一次安装会格式化U盘注意备份数据。装好后你会看到U盘变成了两个分区把archlinux-xxxx.iso丢进大的那个分区弹出U盘硬件设备就算准备好了。不要用老旧的2G U盘Arch的ISO加上校验文件就有1G多建议8G以上U盘USB 3.0更稳。还有一点Ventoy的数据分区默认是exFAT有些老主板死活引导不了exFAT上的ISO如果你遇到U盘能启动Ventoy但ISO转圈后黑屏或报错试着把数据分区格式化成NTFS或者ext4这个坑我也是折腾了一个下午才定位到。2.2 Secure Boot、启动菜单与花式卡死现在的电脑出厂默认开启Secure Boot而Arch的官方安装镜像并没有签微软的引导证书所以默认情况下你是没法从Arch ISO启动的。常见解决办法有两个一是临时关闭Secure Boot。进BIOS设置界面后找到Secure Boot选项把它设置成Disabled保存退出。装好Arch之后可以重新开启Secure Boot配合sbctl做签名这是进阶玩法本文先不建议碰等Grub方案跑稳了再说。二是用Ventoy的Secure Boot支持——Ventoy自带的引导程序签了Microsoft的证书理论上可以绕过Secure Boot直接引导ISO但Arch内核启动时仍可能因Secure Boot限制而拒绝加载未签名模块所以稳妥起见还是关掉它。各品牌进BIOS的方式不同台式机普遍是按Del键联想笔记本通常是F2或FnF2华硕主板上手边通常标注BIOS Setup但实际是Del或F8神州笔记本则经常是F7进入启动菜单。开机不知道按哪个键也没关系——大部分机器开机自检时屏幕底部会一闪而过显示Press F2 for Setup之类的字样或者开机后反复点击Esc、F12也可以碰运气找到引导菜单。进入U盘后最烦的问题是黑屏、卡死在引导界面、或者直接重启。首选排查思路是不启动Ventoy的图形菜单选择GRUB2模式或者normal mode试一次有些U盘控制器在USB 3.0口和USB 2.0口下的表现完全不同插到USB 2.0口黑色内芯往往更稳。另外如果你的电脑GPU是NVIDIA新卡Live环境可能因为默认的nouveau驱动问题卡在启动阶段此时在GRUB界面去掉quiet参数加上modprobe.blacklistnouveau看能不能进如果不行等一会儿或者用启动项里的Arch Linux install medium (x86_64, UEFI)试试。我在帮朋友的新笔记本装机时Live环境里的字体和进度条完全正常但一旦敲任何命令就卡死换了一个USB口解决了。这类硬件兼容性问题非常玄学进不了Live环境时优先怀疑U盘口、U盘本身、以及ISO文件的完整性。2.3 进入Live环境后先做三件事启动到Arch安装镜像后你会看到root登录的zsh提示符。先别急着敲fdisk按顺序做三件事一、确认网络。有线网络兜底最简单通常插上网线就能用。如果是笔记本连Wi-Fi敲iwctl进入交互命令iwctl station wlan0 scan station wlan0 get-networks station wlan0 connect 你的WiFi名字 exit二、确认网络连通和系统时间。敲ping -c 4 archlinux.org timedatectl set-ntp true时间不能省略证书校验和后续pacman同步都依赖准确时间。如果ntp同步失败就手动timedatectl set-time 2025-01-01 12:00:00之类的先顶上。三、确认磁盘设备名。输入lsblk查看当前硬盘列表nvme开头的设备名是NVMe固态硬盘sda是SATA硬盘或U盘。从Live环境启动时U盘本身也会显示为一个设备注意别把U盘当成硬盘来分区。这一步认清设备名能省去后面所有误操作空间。3. 核心安装全流程分区、pacstrap到生成fstab进入正题。前面所有铺垫都是为了这一步——在Live环境里把Arch Linux真正装进硬盘。3.1 使用fdisk完成精确分区避开自动分区的坑Arch官方wiki默认给的是fdisk命令行分区其实还有cfdisk这个带交互界面的工具对新手更友好。我自己常用fdisk因为脚本化操作时命令行更清晰但如果你第一次接触字符界面分区用cfdisk可以大幅减少输错命令的概率。打开分区工具前先确认一下盘符。假设你的Arch所在盘是/dev/nvme0n1执行fdisk /dev/nvme0n1进入fdisk交互界面后输入p打印当前分区表。你会看到Windows的ESP、MSR、C盘等一堆分区。此时千万不要按g新建GPT分区表——g会把全盘清空很多新手死在这儿包括当年的我。你需要做的是在未分配空间上新建分区。我先说明一下fdisk交互模式下的常见操作按键n创建新分区d删除分区t修改分区类型w写入并退出q不保存退出。考虑前面已经压缩出一个未分配块比如100G那就执行n询问分区号时直接回车使用默认值First sector默认会落在未分配空间的起点直接回车。Last sector这里需要填数字默认是到磁盘末尾——这会把所有剩余空间都划成一个分区。如果你想把/home和/分开可以填100G然后再次n把剩余空间全部作为下一个分区。如果只想要一个根分区加家目录也可以只建一个根分区之后在系统里用btrfs子卷拆这属于个人选择。分区创建完后用t修改type。Linux根分区和家目录分区默认的Linux filesystem类型就够了不用特意改成LVM或swap因为这里不打算用swap分区。如果之前Windows把磁盘转成了动态磁盘fdisk会提示无法读取分区表这种极端情况不在本文展开。写完分区后执行w保存退出。用lsblk再看一眼确认出现新分区。然后格式化注意设备名要看清楚mkfs.ext4 /dev/nvme0n1p5 mkfs.ext4 /dev/nvme0n1p6这里没有格式化ESP因为我们复用Windows的ESP如果格式化会直接毁掉Windows引导文件。3.2 挂载分区为什么顺序不能乱格式化完成后先把根分区挂载到/mnt再把家目录挂载到/mnt/home最后把ESP挂载到/mnt/boot。mount /dev/nvme0n1p5 /mnt mount --mkdir /dev/nvme0n1p6 /mnt/home mount --mkdir /dev/nvme0n1p1 /mnt/boot我特意用mount --mkdir因为/mnt/home和/mnt/boot在挂载前还不存在传统方法要先mkdir -p。挂载顺序确实有讲究先挂根分区再挂子目录否则内核挂载时会找不到父目录的挂载点而报错或挂错位置。挂载完成后可以用lsblk -f检查所有分区的文件和挂载点是否正确。这一步每次安装我都必做因为在fdisk里容易把分区号看错宁可多花30秒也不要pacstrap写到一半发现挂的是Windows分区。3.3 pacstrap安装系统和生成fstab基础包安装是连Linux内核一起装进去的过程。输入命令pacstrap -K /mnt base linux linux-firmware intel-ucode vim networkmanager grub efibootmgr os-prober-K参数是生成一个内核密钥环装完系统才能正常用pacman安装其他包。intel-ucode是Intel CPU的微码如果你是AMD CPU替换成amd-ucode。linux-firmware包含各类硬件驱动固件强烈建议保留很多无线网卡、显卡固件都靠它。网络Manager和grub、os-prober这些包如果等系统重启后再装也可以但既然在chroot里能一次做完干脆一次列全。顺带加个vim因为后面改配置文件离不开编辑器默认连nano都没有。等待pacstrap下载安装完时间取决于网络速度可能从几分钟到半小时不等。安装完成后生成fstabgenfstab -U /mnt /mnt/etc/fstabfstab就是开机时自动挂载分区的配置文件-U表示用UUID记录分区。生成后检查一下cat /mnt/etc/fstab正常情况应该能看到根分区、家目录、ESP三条挂载记录。如果esp分区没有成功写入fstab你重启后会进不了GRUB——后面引导安装环节也容易错过。有玩家习惯给GRUB单独分一个/boot分区那样fstab也必须包含它。3.4 chroot进入新系统完成基础配置挂载完成后chroot进入新系统从这一步开始你操作的就是新硬盘里的系统了arch-chroot /mnt先装个基础的sudo顺便把localtime和必要的系统组件配置了pacman -S sudo ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime hwclock --systohc时区按你自己所在区域选国内一般Shanghai。hwclock --systohc把系统时间写入硬件时钟避免双系统下Windows和Linux时间差8小时。接着编辑locale配置文件vim /etc/locale.gen把en_US.UTF-8 UTF-8和zh_CN.UTF-8 UTF-8这两行的注释符号去掉然后运行locale-gen echo LANGen_US.UTF-8 /etc/locale.conf这里建议保留英文系统语言中文的话终端里可能出现localization缺失导致的乱码和工具报错。字体和输入法后面可以单独装系统语言用英文始终是最省心的。改主机名和hostsecho arch-box /etc/hostname vim /etc/hostshosts文件内容参考127.0.0.1 localhost ::1 localhost 127.0.1.1 arch-box.localdomain arch-box设置root密码passwd到这里系统基础配置算完成了还没到启动阶段。接下来关键的部分是双系统引导。4. 双系统引导GRUB与os-prober的配置细节引导配置是整个双系统安装过程中最容易被跳过的重点也是翻车率最高的地方。很多人正常装完Arch重启后却发现直接进了Windows或者GRUB菜单里根本没有Windows选项这时候十有八九是os-prober的问题。4.1 grub-install的三个关键参数在chroot环境中执行GRUB安装命令grub-install --targetx86_64-efi --efi-directory/boot --bootloader-idGRUB--targetx86_64-efi指定安装64位EFI版GRUB不懂参数含义的话建议直接抄目的是让GRUB往UEFI的NVRAM里写入一个名为GRUB的启动项。--efi-directory/boot是告诉GRUB去哪找ESP分区——因为我们把ESP挂到了/boot所以这里填/boot别写成/boot/efi。--bootloader-idGRUB是开机时在BIOS引导菜单里显示的启动项名称换成自己喜欢的名字也行。如果这一步报错提示efibootmgr: not found说明你没装efibootmgr包回上一步pacman -S efibootmgr。如果提示failed to register the EFI boot entry大概率是ESP空间不足或者NVRAM写入权限受限前者删掉ESP里多余文件腾空间后者可以在BIOS里通过手动添加引导文件的方式来补救。执行成功后GRUB会直接把grubx64.efi写入ESP分区的/EFI/GRUB/目录下。接着生成GRUB主配置文件grub-mkconfig -o /boot/grub/grub.cfg生成的grub.cfg会默认检测到Arch Linux但你很快会发现没有Windows的菜单项。这不是GRUB坏了而是GRUB默认不扫描其他系统需要一个开关。4.2 os-prober的隐藏开关和Windows识别Arch的GRUB配置里os-prober默认是禁用的原因是为了防止潜在的安全风险。要让它扫描Windows需要修改/etc/default/grub添加一行echo GRUB_DISABLE_OS_PROBERfalse /etc/default/grub然后重新生成配置os-prober grub-mkconfig -o /boot/grub/grub.cfgos-prober会扫描ESP分区和所有其他磁盘找到Windows Boot Manager后把它写进grub.cfg。如果执行完后grub.cfg里没有出现Windows可以确认ESP分区是否挂载到了/boot用mount查看或者Windows引导文件是否还好好地在ESP分区里例如执行ls /boot/EFI/Microsoft/Boot/bootmgfw.efi。这里还有一个容易被忽略的依赖ntfs-3g包。即使os-prober能识别Windows文件系统如果系统里没有NTFS读写驱动它也可能读不到Windows分区。保险起见chroot里先执行pacman -S ntfs-3g再跑一次os-prober。另外如果你在其他硬盘上也装了Windows或Ubuntu双系统选择时GRUB菜单项可能出现多个Windows Boot Manager不要慌保留指向你主系统那个即可GRUB菜单顺序也可以之后通过修改grub.cfg或使用GRUB自定义菜单调整。4.3 重启前最后的检查与进不去系统的兜底方案退出chroot前做一遍完整检查exit umount -R /mnt rebootumount -R是递归卸载确保所有挂载点都被释放。直接reboot前如果遇到target is busy之类的提示稍等几秒再执行或者用umount -R /mnt后重新卸载。如果重启后没有看到GRUB菜单而是直接进了Windows别紧张。重启进BIOS设置找Boot Order调整启动顺序把GRUB或UEFI Hard Disk的启动项移到最前。如果GRUB根本没出现在BIOS启动项里提供两个思路一是从Arch安装U盘启动进Live环境然后按之前的步骤mount根分区和ESParch-chroot进入系统之后重装GRUB并重新生成配置流程和上面一模一样。二是尝试在BIOS里添加启动项直接指向ESP分区里的\EFI\GRUB\grubx64.efi文件这个操作在UEFI界面里通常叫Add Boot Option。重启前还有个细节把GRUB菜单的等待时间调大一点。默认GRUB_TIMEOUT5如果你在Windows和Arch之间切换比较频繁、或者想给家人留个选择时间改成10秒更从容。修改文件是/etc/default/grub改完记得重新grub-mkconfig。5. 桌面环境与日常优化从命令行到图形界面的最后一公里基础的Arch系统装完只能看到字符终端对绝大多数人来说下一个目标就是装一个能日常使用的桌面环境。这一步本身不难但选择面广不同人的需求差异也大我根据自己的使用经验整理了一套比较务实的方案。5.1 桌面环境选型KDE还是XFCEArch官方仓库里桌面环境非常多GNOME、KDE Plasma、XFCE、LXQt、i3wm等各有拥趸。如果让我给双系统用户一个推荐我会首推KDE Plasma其次是XFCE。原因很直观KDE Plasma从外观上最接近Windows的桌面交互逻辑任务栏、系统托盘、开始菜单的思维方式几乎可以直接迁移新手学习成本低而且KDE对高分屏缩放、多显示器、Wayland的实验性支持都做得比GNOME更开放装完即用程度高。GNOME则更走极简路线默认工作流更像平板电脑对习惯传统桌面的人来说需要时间适应。XFCE则是轻量级替代方案。资源占用极低在8G内存的老笔记本上也能流畅运行而且默认配置足够干净。如果你装Arch主要是为了学习、折腾、或者跑服务器XFCE完全够用。至于i3等平铺窗口管理器属于进阶玩家的选择初次安装不要碰。我个人的装机习惯是装KDE Plasma全功能版命令如下pacman -S plasma-meta konsole dolphin ark kate gwenview这里plasma-meta是全功能Plasma套件包含KDE核心应用konsole是终端模拟器dolphin是文件管理器ark是压缩包工具gwenview是看图工具。如果空间紧张也可以只装plasma-desktop这个精简版但很多小工具得自己慢慢找挺麻烦。5.2 系统服务与用户权限NetworkManager和wheel组的坑桌面环境装上后千万别急着重启你还需要一个网络管理器和显示管理器负责开机后自动连接网络、自动启动桌面登录界面。systemctl enable NetworkManagerNetworkManager是网络守护进程你以后在图形界面里点Wi-Fi图标能弹列表全靠它。如果你用的是有线网络系统启动后它会自动获取IP不需要额外配置。记得之前pacstrap时已经装过NetworkManager如果当时没装现在pacman -S networkmanager补上再enable。显示管理器我推荐用sddmKDE默认搭档pacman -S sddm systemctl enable sddm开机后sddm会启动一个图形登录界面输入用户名和密码就能进入桌面。如果你以后想换成lightdm或者gdm只需要把sddm停用再enable另一个。创建日常用户并加入wheel组useradd -m -G wheel 你的用户名 passwd 你的用户名然后编辑sudoers给wheel组授权EDITORvim visudo找到# %wheel ALL(ALL:ALL) ALL这一行去掉注释号。这样你的用户就能用sudo提权而不用每次切换root。5.3 中文字体、输入法与基础应用配置Arch默认不带任何中文字体打开中文网页满屏豆腐块。装字体的命令pacman -S noto-fonts-cjk noto-fonts-emoji wqy-zenhei wqy-microheinoto-fonts-cjk是目前最全的简体中文/繁体中文/日文/韩文字体wqy-zenhei和wqy-microhei是中易系列开源中文字体对自家设备适配很稳。浏览器里的中文字体渲染如果有锯齿可以装noto-fonts找非CJK字体和freetype2默认配置一起配合。输入法我推荐fcitx5pacman -S fcitx5 fcitx5-chinese-addons fcitx5-configtool装完后需要设置环境变量编辑/etc/environment或者~/.config/environment.d/加入GTK_IM_MODULEfcitx QT_IM_MODULEfcitx XMODIFIERSimfcitx然后在系统设置里打开Fcitx5配置工具添加拼音输入法。如果不设置环境变量很多应用里会无法切换中英文或者输入框里直接不弹候选词。图形界面的基础应用还需要firefox浏览器、vlc媒体播放器、p7zip压缩支持、zsh或者保留bash都行。这些日常工具的安装就不多说了装完后记得systemctl enable --now bluetooth如果要用蓝牙pacman -S pulseaudio pulseaudio-alsa装音频驱动。5.4 双系统时间与系统更新的日常维护装完桌面环境后双系统之间总有一个绕不开的问题时间差八小时。这是因为Windows把硬件时钟当作本地时间而Linux把硬件时钟当作UTC。统一方案有两个一是让Arch把硬件时钟当本地时间timedatectl set-local-rtc 1执行后Windows和Arch都能显示正确本地时间代价是系统在夏令时切换时可能出现时间跳动对中国用户没有夏令时可以忽略。二是让Windows把硬件时钟当UTC需要在注册表里弄一个RealTimeIsUniversal项相对麻烦。我建议用第一种一行命令搞定。日常更新Arch的注意点Arch是滚动发行版sudo pacman -Syu可以随时更新。双系统用户需要注意如果你更新了内核linux包重启进入GRUB菜单时偶尔会出现旧版本内核条目这是正常行为因为GRUB会自动保留最近两三个内核版本。如果更新后Windows引导项消失了多数情况是GRUB重生成时os-prober没扫到重新跑一次os-prober和grub-mkconfig -o /boot/grub/grub.cfg即可。6. 那些让我掉过头发的坑实测故障排查集这一节集中写我在多年双系统装机过程中遇到过的、最典型的几个问题。几乎每个问题都有人私信问过我我把排查思路完整写出来希望能帮你少走点弯路。6.1 压缩卷失败与分区中有标记很多人的第一道坎就是Windows压缩卷失败或压缩空间极小。常见错误提示包括无法锁定系统所在分区、此卷上不支持压缩或者压缩出来的空间只有可怜的几个GB。排除掉前面说的快速启动、休眠、虚拟内存等问题后还有一个幕后黑手是——磁盘上的坏道标记或pagefile临时引用。如果上面那些方法都试过还不解决可以试试Windows自带的磁盘检查和碎片整理。管理员PowerShell执行chkdsk C: /f /r然后重启系统让检查在启动阶段完成。chkdsk会修复NTFS的元数据错误包括文件索引、bitmap映射表等这些错误都可能影响压缩卷计算可压缩空间。排查完这些一般都能解决。如果还是不行——比如你的C盘末尾是某品牌的恢复分区微软的压缩卷算法可能认为末尾有不可移动文件而拒绝压缩。这时候可以使用分区助手类的工具调整让恢复分区先向磁盘尾部移动把空隙让出来然后再压缩。傲梅分区助手这类工具在调整分区位置时本质上是在做大量的数据搬移时间很长务必保证电脑供电稳定别装到一半断电。这里必须再强调一遍任何分区调整都有一定风险操作前先做重要数据的文件级备份这不是吓唬人。6.2 Windows启动引导损坏bootrec修复思路装完Arch双系统后最常见的灾难场景是Windows突然进不去了报错0xc000000e或者直接蓝屏。这种现象多数不是Arch搞坏了Windows而是Windows引导文件在ESP分区里出现了损坏、或被分区助手误操作覆盖。如果你还能进Windows的自动修复环境可以在命令行里执行bootrec /fixmbr bootrec /fixboot bootrec /scanos bootrec /rebuildbcd然后重启一般就好了。如果连自动修复都进不去用Windows安装U盘启动进入修复计算机找疑难解答 - 高级选项 - 命令提示符再执行上面命令。这类操作很少会影响到GRUB因为Windows修复工具默认只会修复自己的BCD数据库不会主动删除GRUB文件。反过来如果修完Windows后GRUB菜单消失了按照前面说的方式从Arch安装U盘启动chroot重装GRUB并更新配置就能恢复双系统菜单。6.3 NVIDIA显卡与桌面环境的兼容性问题双系统用户里用NVIDIA显卡的比例不低而NVIDIA在Linux下的历史性坑位总是被人反复踩。装最新卡驱动时很多人会推荐pacman -S nvidia这个包适用于大多数主流N卡装完重启。但如果你使用的内核不是默认的Linux内核比如你装了linux-lts或linux-zen就要装相应的nvidia-lts或nvidia-zen精确匹配内核版本否则启动时驱动加载失败桌面起不来。NVIDIA驱动装完第一次进Plasma可能黑屏或花屏排查方向是确认驱动模块是否加载执行lsmod | grep nvidia如果没输出说明驱动没加载确认是否开启了Wayland——NVIDIA用户最稳的方案是使用X11会话登录界面sddm右下角切换到Plasma (X11)再登录Wayland下很多N卡还真不太行。如果还是黑屏进GRUB菜单按e编辑启动参数在linux行末尾加nomodeset这能暂时禁用内核模式设置给你一个能用的图形环境来进行后续排查。6.4 网络和软件源慢的优化方案双系统装完另一个容易出现的问题是pacman下载软件极慢。默认源在国外国内直连速度惨不忍睹。可以换用国内镜像源。编辑/etc/pacman.d/mirrorlist把国内的镜像源地址放到文件最前面比如清华、中科大、阿里云的镜像文件里有注释说明取消注释即可。Server https://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch改完源记得sudo pacman -Syy刷新缓存。如果某个镜像偶发同步延迟导致软件包版本不一致可以切换到另一个镜像源再试。另外Arch默认不会自动更新镜像列表但定期手动执行reflector或者pacman -S archlinux-keyring刷新密钥环是好习惯因为滚动更新过程中偶发的签名失效问题八成能靠更新keyring解决。6.5 磁盘空间检查与开机提示空间不足最后一个容易被忽视的问题ESP分区和根分区空间不足。我遇到过不止一次用户装了不少桌面环境、主题、浏览器后根分区直接满了。所以分区时根分区不要只给20G30G只能说勉强够用如果打算日常使用、装IDE、装容器50G到100G是安心区间。根分区满了以后排查占用大户可以使用ncdu这个终端工具扫描目录占用比一步步du省心太多。清理缓存可以用sudo pacman -Scc清全部缓存或者paccache -r保留最近版本删旧版本。日志占空间的话sudo journalctl --vacuum-size50M限制一下journal大小。ESP空间如果满了GRUB更新会失败表现为开机提示找不到grub.cfg或者直接进emergency mode之前说过解决思路是找ESP里的大文件删掉比如Windows升级时残留的/EFI/Microsoft/Boot/Fonts完整字库、多个Linux发行版的引导文件等。说句心里话双系统装好之后的维护阶段比安装阶段更能考验人。不过只要理解了引导链路的原理——固件先找NVRAM里的启动项、再把控制权交给ESP里的GRUB、GRUB通过os-prober找到Windows——绝大多数问题都能顺着链路一层层定位出来。我个人在每次给新电脑装Arch Linux双系统时都会在Windows分区压缩完之后先做一次快照或镜像备份然后才开始分区。这个习惯帮我挡了很多次意外。装完桌面环境也别急着卸载安装U盘让它当个应急修复盘放着哪天引导出问题几分钟就能救回来。你这台机器既然准备装Arch就说明不排斥折腾那遇到问题时放平心态记录日志、拆解流程、逐个验证反而能学到最多东西。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价