[{"data":1,"prerenderedAt":370},["ShallowReactive",2],{"content:\u002F2024\u002Farchlinux-boot-repair":3,"surround:\u002F2024\u002Farchlinux-boot-repair":358},{"id":4,"title":5,"body":6,"categories":327,"date":329,"description":330,"draft":331,"extension":332,"image":333,"meta":334,"navigation":336,"path":337,"permalink":338,"published":338,"readingTime":339,"recommend":338,"references":344,"seo":348,"sitemap":349,"stem":350,"tags":351,"type":355,"updated":356,"__hash__":357},"content\u002Fposts\u002F2024\u002Farchlinux-boot-repair.md","Arch Linux 启动引导修复",{"type":7,"value":8,"toc":317},"minimark",[9,14,24,28,106,109,160,163,207,211,217,228,231,298,301,304],[10,11,13],"h2",{"id":12},"制作启动盘进入并联网","制作启动盘、进入并联网",[15,16,17,18,23],"p",{},"参见 ",[19,20,22],"a",{"href":21},"\u002F2023\u002Farchinstall-guide","使用 ArchInstall 安装 Arch Linux"," 的“安装前准备”一节。",[10,25,27],{"id":26},"挂载分区进入系统","挂载分区、进入系统",[29,30,31,40,74,94,100],"ul",{},[32,33,34,35],"li",{},"如果不了解你的硬盘分区，可以执行以下命令：\n",[36,37],"copy",{"code":38,"prompt":39},"lsblk -f","#",[32,41,42,43],{},"先挂载根目录所在的分区：\n",[29,44,45,51],{},[32,46,47,48],{},"非 BtrFS 分区\n",[36,49],{"code":50,"prompt":39},"mount \u002Fdev\u002F[根分区] \u002Fmnt",[32,52,53,54],{},"如果根分区使用 BtrFS，需要知道子卷名，如果没有子卷可以跳过此步\n",[29,55,56,65],{},[32,57,58,59,62],{},"可以通过先挂载 BtrFS，然后通过以下命令之一查看子卷名\n",[36,60],{"code":61,"prompt":39},"ls \u002Fmnt",[36,63],{"code":64,"prompt":39},"btrfs subvolume list \u002F[挂载点]",[32,66,67,68,71],{},"随后解除 \u002Fmnt 的挂载并重新挂载对应的子卷\n",[36,69],{"code":70,"prompt":39},"umount \u002Fmnt",[36,72],{"code":73,"prompt":39},"mount \u002Fdev\u002F[根分区] -t btrfs -o subvol=[子卷名] \u002Fmnt",[32,75,76,77],{},"随后挂载其他分区：\n",[29,78,79,85,91],{},[32,80,81,82],{},"挂载启动分区\n",[36,83],{"code":84,"prompt":39},"mount \u002Fdev\u002F[启动分区] \u002Fmnt\u002Fboot",[32,86,87,88],{},"查看先前的挂载方式，有助于你的回忆\n",[36,89],{"code":90,"prompt":39},"cat \u002Fmnt\u002Fetc\u002Ffstab",[32,92,93],{},"如果回忆起有其他分区，请继续挂载",[32,95,96,97],{},"可以将此时的挂载方式写入原系统：\n",[36,98],{"code":99,"prompt":39},"genfstab -U \u002Fmnt > \u002Fmnt\u002Fetc\u002Ffstab",[32,101,102,103],{},"随后就可以进入原系统了\n",[36,104],{"code":105,"prompt":39},"arch-chroot \u002Fmnt",[10,107,108],{"id":108},"修复一些可能导致无法进入的问题",[29,110,111,122],{},[32,112,113,114,118,119],{},"如果忘记 ",[115,116,117],"code",{"code":117},"root"," 用户密码，可以执行以下命令：\n",[36,120],{"code":121,"prompt":39},"passwd",[32,123,124,125,129,130,133,138,141,144,149,152,157],{},"同时，还可以更新一下系统的软件包，",[126,127,128],"strong",{},"说不定有用呢","：\n",[36,131],{"code":132,"prompt":39},"pacman -Syyuu",[29,134,135],{},[32,136,137],{},"如果更新缓慢，可以换源",[36,139],{"code":140,"prompt":39},"pacman -S reflector",[36,142],{"code":143,"prompt":39},"reflector --verbose --country China --sort rate --save \u002Fetc\u002Fpacman.d\u002Fmirrorlist",[29,145,146],{},[32,147,148],{},"如果提醒无法锁定数据库，可以删除锁文件",[36,150],{"code":151,"prompt":39},"rm \u002Fvar\u002Flib\u002Fpacman\u002Fdb.lck",[29,153,154],{},[32,155,156],{},"如果提醒某文件已存在，可以强制覆盖",[36,158],{"code":159,"prompt":39},"pacman -Syu --overwrite \"*\"",[10,161,162],{"id":162},"修复引导",[29,164,165,171,193],{},[32,166,167,168],{},"安装 Linux 包可以触发 mkinitcpio\n",[36,169],{"code":170,"prompt":39},"pacman -S linux",[32,172,173,174,177,182,185,190],{},"如果使用 systemd-boot，请执行以下命令\n",[36,175],{"code":176,"prompt":39},"bootctl install",[29,178,179],{},[32,180,181],{},"使用此命令检测 EFI 引导项和 Boot Loader 配置",[36,183],{"code":184,"prompt":39},"bootctl list",[29,186,187],{},[32,188,189],{},"如果屏幕显示不全，可以使用交互模式，按 q 退出",[36,191],{"code":192,"prompt":39},"bootctl",[32,194,195,196,199,204],{},"如果使用 grub，请执行以下命令\n",[36,197],{"code":198,"prompt":39},"grub-install",[29,200,201],{},[32,202,203],{},"备用命令，也可以自行在网上搜索",[36,205],{"code":206,"prompt":39},"grub-install --target=x86_64-efi --efi-directory=\u002Fboot\u002Fefi --bootloader-id=grub",[10,208,210],{"id":209},"为-systemd-boot-添加引导项","为 systemd-boot 添加引导项",[15,212,213,214,216],{},"如果 ",[115,215,184],{"code":184}," 显示没有 Arch Linux，那么需要写入以下文件：",[218,219,226],"pre",{"className":220,"code":222,"filename":223,"language":224,"meta":225},[221],"language-sh","title   Arch Linux (linux)\nlinux   \u002Fvmlinuz-linux\ninitrd  \u002Fintel-ucode.img\ninitrd  \u002Finitramfs-linux.img\noptions root=PARTUUID=692afe0d-e1d7-4e0f-970f-1ed04e0c07e9 zswap.enabled=0 rootflags=subvol=@ rw rootfstype=btrfs\n","\u002Fboot\u002Floader\u002Fentries\u002Farch.conf","sh","",[115,227,222],{"__ignoreMap":225},[15,229,230],{},"请注意：",[232,233,234,269,276],"ol",{},[32,235,236,237,240,241,245,246],{},"PARTUUID 和 UUID 不同，",[115,238,38],{"className":239,"code":38,"language":224},[221]," 命令显示的是 UUID，你可以通过 ",[115,242,244],{"className":243,"code":244,"language":224},[221],"lsblk -o+UUID,PARTUUID"," 发现两者的区别。\n",[29,247,248,254],{},[32,249,250,251],{},"查看 PARTUUID 并追加到文件中\n",[36,252],{"code":253,"prompt":39},"blkid -s PARTUUID -o value \u002Fdev\u002F[根分区] >> \u002Fboot\u002Floader\u002Fentries\u002Farch.conf",[32,255,256,257,261,262,266],{},"查看 UUID 并追加到文件中，需要 ",[115,258,260],{"className":259,"code":260,"language":224},[221],"option"," 中使用 ",[115,263,265],{"className":264,"code":265,"language":224},[221],"root=UUID=",[36,267],{"code":268,"prompt":39},"blkid -s UUID -o value \u002Fdev\u002F[根分区] >> \u002Fboot\u002Floader\u002Fentries\u002Farch.conf",[32,270,271,275],{},[115,272,274],{"className":273,"code":274,"language":224},[221],"initrd"," 中需要添加对应 CPU 的微码，没有的话可以跳过。",[32,277,278,282,283,287,288,292,293,297],{},[115,279,281],{"className":280,"code":281,"language":224},[221],"options"," 中设置合适的 ",[115,284,286],{"className":285,"code":286,"language":224},[221],"rootfstype"," 和 ",[115,289,291],{"className":290,"code":291,"language":224},[221],"rootflags","，有子卷时需要设置 ",[115,294,296],{"className":295,"code":296,"language":224},[221],"rootflags=subvol=[子卷名]","。",[10,299,300],{"id":300},"重启",[15,302,303],{},"按 Ctrl+Alt+Delete 直接重启。",[15,305,306,307,311,312,316],{},"更规范的方式是输入 ",[115,308,310],{"className":309,"code":310,"language":224},[221],"exit"," 或按 Ctrl+D 退出 chroot 环境，然后执行 ",[115,313,315],{"className":314,"code":315,"language":224},[221],"reboot"," 命令重启。",{"title":225,"searchDepth":318,"depth":318,"links":319},4,[320,322,323,324,325,326],{"id":12,"depth":321,"text":13},2,{"id":26,"depth":321,"text":27},{"id":108,"depth":321,"text":108},{"id":162,"depth":321,"text":162},{"id":209,"depth":321,"text":210},{"id":300,"depth":321,"text":300},[328],"技术","2024-04-01 23:14:39","可以修复绝大多数 Arch Linux 无法启动的问题。",false,"md","https:\u002F\u002Fassets.zhilu.cyou\u002Fcover3\u002Farchlinux-boot-repair.jpg",{"slots":335},{},true,"\u002F2024\u002Farchlinux-boot-repair",null,{"text":340,"minutes":341,"time":342,"words":343},"3 min read",2.765,165900,553,[345],{"title":346,"link":347},"systemd-boot - Arch Linux 中文维基","https:\u002F\u002Fwiki.archlinuxcn.org\u002Fwiki\u002FSystemd-boot",{"title":5,"description":330},{"loc":337},"posts\u002F2024\u002Farchlinux-boot-repair",[352,353,354],"Arch Linux","引导修复","故障排查","tech","2025-03-04 22:30:59","qRIj8NhSd1qDP0_bBD7u4WxYccqj5L50953aQZQOyQE",[359,365],{"title":360,"path":361,"stem":362,"date":363,"type":364,"children":-1},"在延长今天和期待明天之间","\u002F2024\u002Fbalancing-today-tomorrow","posts\u002F2024\u002Fbalancing-today-tomorrow","2024-03-21 23:45:08","story",{"title":366,"path":367,"stem":368,"date":369,"type":355,"children":-1},"写过的奇妙代码。","\u002F2024\u002Fmagic-code","posts\u002F2024\u002Fmagic-code","2024-04-07 12:32:11",1782091376099]