最后总结一下,方法有两个:
一是先找到一种能够以纯 UEFI 模式启动 Linux 的方法,chroot 到原系统,然后安装 GRUB。
二是随便用一种方法启动 Linux,无论是 UEIF 模式还是 Legacy 模式或者 Both 模式,启动之后同样 chroot 到原系统,安装 GRUB,装好之后把安装到 ESP 分区的 grubx64.efi 复制一份放到 ESP 分区的 /EFI/Boot 下,重命名成 bootx64.efi,之后进 BIOS 切换到纯 UEFI 模式重启即可。
=======================================================================================================================
再更新:昨天晚上在U盘里装系统,又把启动项搞丢了,折腾了一阵又弄回来了。折腾的过程中可能猜到了之前 GRUB 无法引导的原因。
我这台 x220 的问题有以下这些:
1. 在 Legacy/UIFI Both 模式的时候,主板上启动相关的信息是写保护的,必须以纯 UEFI 模式启动系统,然后安装 GRUB,才可以把启动相关的信息写进去。
2. 不知道为啥,2014年6月在 Arch Linux 官方下载的 ISO 镜像无法在我这台 x220 的 UEFI 模式下启动。
所以之前我用 Ubuntu Live CD 在纯 UEFI 模式下安装 Ubuntu,启动信息是能够写入主板的。现在想想,当时的方法绕了大弯路,其实没有必要把 Ubuntu 装上,只要用 Ubuntu 的 Live CD,在纯 UEFI 模式下启动,之后 chroot 到我自己的系统,然后安装 GRUB 即可。只是当时因为用 Arch Linux 的 ISO 在 Legacy/UEIF Both 模式下安装了好几次 grub 都不成功,所以想当然的认为 Ubuntu Live CD 以纯 UEFI 模式启动之后 chroot 到我的系统里安装 GRUB 也不能成功。
至于之前说的从硬盘启动时会自动进入 Windows Boot Manager 的情况,是因为很早以前我在这块硬盘上安装过 Windows 7,后来换 Linux 的时候,没有把 ESP 分区里面相关的启动文件(/EFI/Boot/bootx64.efi)删除干净,所以从硬盘启动的时候,在主板上没有任何启动相关信息的时候会自动的找到这个文件来启动。昨天晚上我就是利用了这一点,用 Legacy/UEIF Both 模式启动,把原系统各分区包括 ESP 分区挂载上,再 chroot 过去把 GRUB 装上,当然根据前面所说,这时我这台 x220 启动信息是写不进主板的,但也没关系,只要把装好的 grubx64.efi 复制一份,放到 /EFI/Boot/ 下,重命名成 bootx64.efi(不知道是不是必须的),然后就可以以纯 UEFI 模式从硬盘启动了。启动之后再把 GRUB 重新装一次,启动信息写入主板,然后把 /EFI/Boot 目录整个删除(其实没必要删除,留着也行)。
最后那个 Arch Linux CD 无法以 UEIF 模式启动的问题,先暂且认为是兼容性的问题,先不管了吧,反正我在U盘上装了系统,随时可以用,就当解决了。
=======================================================================================================================
更新:之前那个问题解决了,解决的方法非常绕,还破坏了我的操作系统。我下载了一个 Ubuntu Live CD,量产成 USB 启动盘,在我的第二块硬盘(我有双硬盘)上重装了一个 Ubuntu,之后发现能从这个 Ubuntu 启动。开机的时候按 F12 也有 Ubuntu 这一项,进去之后就是 GRUB 的菜单。然后我进入系统把第一块硬盘里面的 grub.cfg 复制到 Ubuntu 系统的 /boot/grub/ 下,重启,就能进入我第一块硬盘的系统了。但是第二块硬盘的系统被刚装的 Ubuntu(仅仅是为了引导系统而装的)覆盖掉了,需要重装。
为什么我用 Ubuntu Live CD 来启动呢?是因为不知道为啥,我发现我之前的 Arch Linux 启动盘无法启动,重新量产了一个也一样。开机的时候选择 Arch Linux 盘引导是能看到菜单的,但我选择了第一项想进行系统安装的时候,它先是清屏了一下,然后就这样屏幕全黑的没反应了,必须强制关机。有人知道这是怎么回事不?
搜了一下,跟这家伙遇到的问题一样。
========================================================================================================================
下面这个是旧问题,已解决:
机器是 ThinkPad x220,之前的主板坏了,淘宝上买了一块换上。不知道为什么 Arch Linux 安装盘无法以 UEFI 模式启动。但是另外一个 Windos8 安装盘却可以顺利以 UEFI 模式启动。
我把主板 BIOS 设置里面的 UEFI/Legacy Boot改成Both 之后,才能从 Arch Linux CD 启动。进去之后我执行了一下 grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=arch_grub --recheck --debug,没有任何错误。然后我再重启,结果系统还是会自动的启动 Windows Boot Manager。这玩意是写到主板上了么?为啥我的 GRUB 安装不上?
而且开机时按 F12 进入启动选择菜单也看不到 arch_grub,以前的主板是有的。BIOS 设置里已经删除了 Windows Boot Manager 那一项。
最近编辑记录 yuan (2014-07-04 15:45:24)
达无先后
离线
ESP 分区是哪一个? 挂载了吗? 里面有 Linux 内核吗?
离线
ESP 分区是哪一个? 挂载了吗? 里面有 Linux 内核吗?
你问的是前面那个问题么?
/dev/sda1,挂载了,有。
达无先后
离线