本博客由闲散白帽子胖胖鹏鹏胖胖鹏潜力所写,仅仅作为个人技术交流分享,不得用做商业用途。转载请注明出处,未经许可禁止将本博客内所有内容转载、商用。
这是一个诡异的故事,我的电脑是Manjaro+win10双系统,使用grub进行引导,这两个系统本来相干无视,昨天进入到win10提示更新,我想都没想直接更新了,点了更新然后去洗澡,洗完澡发现电脑黑屏了,并且进入了grub rescue模式。看到屏幕,一脸懵。。。。无奈只好用爪机google,修复引导区。
0x01 修复grub
通过了一番搜索,还好是个普遍问题。根据[1]中的提示,先进入到Manjaro之后再修复grub。先使用ls命令查看下分区表~
grub rescue> ls
(hd0) (hd0,gpt9) (hd0,gpt8) (hd0,gpt7) (hd0,gpt6) (hd0,gpt5) (hd0,gpt4) (hd0,gpt3) (hd0,gpt2) (hd0,gpt1) (hd0,gpt0)
这里的输出结果可能因人而异,我的电脑gpt8是Manjaro,下面就是输入一下指令进入Manjaro。(如果不记得,可以一个一个试~用ls (hd0,gpt$)/boot命令试,如果有正确路径就是linux系统分区)
grub rescue> set root=(hd0,gpt8)
grub rescue> set prefix=(hd0,gpt8)/boot/grub
grub rescue> insmod normal
grub rescue> normal
这样就能够成功进入Manjaro系统,这个时候事情更诡异了,我的键盘不能用了!无奈现在当务之急是解决系统引导的问题,先插上usb键盘凑活用,稍后再看键盘的事儿~进入到Manjaro之后,使用编辑器将grub.cfg中错误的分区修改过来,比如cfg文件中写的是root=(hd0,gpt7),我们需要将gpt7全部替换为gpt8。修改完成之后,进行如下操作:
sudo grub-install /dev/sda
sudo cp /boot/grub/x86_64-efi/core.efi /boot/efi/EFI/boot/bootx64.efi
sudo efibootmgr -c -d /dev/sda -p X -L "manjaro" -l "\EFI\Manjaro\grubx64.efi"
sudo update-grub
注意将"-p X"中的X替换成你的Manjaro分区符,在我这里,gpt8为linux分区,所以我写成-p 8,同时Manjaro名字建议改为Ubuntu~(这里涉及的是Asus的BIOS的bug,如果名称设置为manjaro由于白名单限制,导致系统无法启动,修改为Ubuntu则可以正常启动),其他的不用动,这样之后重启我们就能够看到熟悉的grub界面了。0x02 恢复键盘
接下来就是恢复笔记本键盘的使用了。爪机搜索了一番,从Manjaro wiki的说明来看,好像是在某次内核升级之后libinput出现了一个bug,但是我的libinput已经跟新至最新,内核也已经高于bug版本(我的是14.5,出问题的是13),明显不存在这种bug。尝试着切换内核和libinput降级均无果。。。嘛,翻到了一个帖子是这样说的
"原因是我的主板有点新,所以需要使用nolapic作为boot选项"
"APIC(Advanced Programmable Interrupt Controller)新系统上的一个特性。“local”版本就是LAPIC,这个控制器的功能就是生成和处理中断,中断就是硬件进行传递和使用信息的一种信息。同时,一些APIC在老系统上存在问题,所以有的时候需要禁用,使用nolapic选项。”
现在找到原因了,接下来就是修改选项了。我的方法就是修改/boot/grub/grub.cfg,在引导项中找到manjaro对应的选项,找到以linux开头的那一行,之后增加一个 nolapic的选项即可。切记只可修改一处,如果修改过多,则将导致鼠标卡顿(我也不知道为什么)。
0x03 后记
其实导致这个问题的主要原因就是win10在更新之后增加了一个分区,导致之前所有的分区都向后移动一个号码,这样就导致grub找不到manjaro分区,从而无法完成启动过程;同时,win10还给我电脑更新了BIOS,导致硬盘无法识别!生气!哪有系统会帮人家升级BIOS的!
参考网址:
[1] win10更新之后双系统抢救。https://www.jianshu.com/p/04036c7069ea
[2] https://forum.manjaro.org/t/grub-not-showing-up-on-uefi-pc/43647/8
[3] https://bbs.archlinux.org/viewtopic.php?id=194084
[4] https://askubuntu.com/questions/52096/what-do-the-different-boot-options-mean-i-e-acpi-off-noapic-nolapic-etc