V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
takeoffyoung
V2EX  ›  程序员

Virtual Box(guest os Arch) UEFI 不引导,求助

  •  
  •   takeoffyoung · 2017-03-10 20:37:28 +08:00 · 2362 次点击
    这是一个创建于 2818 天前的主题,其中的信息可能已经有所发展或是发生改变。

    通过正常流程安装了 Arch

    /dev/sda1 作为 ESP 挂载在 /boot , /boot/EFI/grub/grub.efi 存在

    启动管理方式为 grub + efibootmgr

    每次关机之后,都必须手动选择 boot from file,然后选择 grub.efi, 无法自动加载 Arch 的引导

    请问这种情况可能是哪里出了问题,应该怎么解决

    19 条回复    2017-03-11 18:40:24 +08:00
    julyclyde
        1
    julyclyde  
       2017-03-10 21:33:26 +08:00
    /boot/EFI/ 必须是 FAT (或者叫 EFI )格式的分区
    takeoffyoung
        2
    takeoffyoung  
    OP
       2017-03-10 22:01:28 +08:00
    @julyclyde /boot/EFI 必须是一个分区么?
    takeoffyoung
        3
    takeoffyoung  
    OP
       2017-03-10 22:02:41 +08:00
    @julyclyde 是不是应该直接把 sda1 挂载到 /boot/EFI 而不是挂载到 /boot ?
    takeoffyoung
        4
    takeoffyoung  
    OP
       2017-03-10 22:06:25 +08:00
    takeoffyoung
        5
    takeoffyoung  
    OP
       2017-03-10 22:06:38 +08:00
    takeoffyoung
        6
    takeoffyoung  
    OP
       2017-03-10 22:06:55 +08:00
    yunshansimon
        7
    yunshansimon  
       2017-03-10 22:15:34 +08:00 via iPad
    使用 UEFI 磁盘必须整个用 gpt 分区格式。建立一个 fat 格式的分区, label 是 EFI ,加可引导标识 bootable 。把编译好的 efi 文件放到分区的根目录就好了。如果有配置文件,放到编译 efi 文件时设定的目录,一般跟 efi 文件放一起,或者放 /grub 目录下( EFI 的分区)。内核命令行设定加载 root 分区。
    kokutou
        8
    kokutou  
       2017-03-10 22:23:04 +08:00
    /boot/EFI/boot/bootx64.efi 有吗?

    bios 是先找这个文件。。。
    kokutou
        9
    kokutou  
       2017-03-10 22:24:39 +08:00
    grub 按照 arch wiki 上的 uefi 的命令装,我实体机装过。没问题。
    grub 安装的时候有参数指定复制的引导文件类型,和目标位置。
    julyclyde
        10
    julyclyde  
       2017-03-10 23:07:26 +08:00
    /boot 如果是独立 FAT 分区也可以;最低要求是 /boot/EFI/ 是独立分区

    centos 安装程序如果检测到不合适的情况会提示;其它发行版不了解是否会
    takeoffyoung
        11
    takeoffyoung  
    OP
       2017-03-10 23:08:37 +08:00
    @kokutou 照着这个指定的 --efi-directory=/boot

    所以需要把 EFI 格式的分区挂载到 /boot/EFI 么?

    还是挂载到 /boot
    takeoffyoung
        12
    takeoffyoung  
    OP
       2017-03-10 23:13:28 +08:00
    @julyclyde 我的做法是,/boot 是独立分区,不清楚 efibootmgr 生成的 efi 文件应该指定在哪里才能在开机的时候读取到呢?
    kokutou
        13
    kokutou  
       2017-03-10 23:36:22 +08:00
    @takeoffyoung #11
    https://wiki.archlinux.org/index.php/GRUB#UEFI_systems
    # grub-install --target=x86_64-efi --efi-directory=esp_mount --bootloader-id=grub
    UEFI firmware workaround 《《《——————《《《——————
    # mkdir esp/EFI/boot
    # cp esp/EFI/grub_uefi/grubx64.efi esp/EFI/boot/bootx64.efi
    takeoffyoung
        14
    takeoffyoung  
    OP
       2017-03-11 01:23:21 +08:00
    @kokutou 似乎并没有解决问题。
    我还是先去仔细了解一下原理再去解决这个问题吧
    Biggulu
        15
    Biggulu  
       2017-03-11 10:10:45 +08:00
    /boot/EFI/boot/bootx64.efi   vbox 识别的引导路径是这个,检查下你的文件名还有路径
    julyclyde
        16
    julyclyde  
       2017-03-11 11:23:16 +08:00
    @takeoffyoung 不止是独立的问题,关键是要 FAT 格式,才能被 UEFI 识别
    takeoffyoung
        17
    takeoffyoung  
    OP
       2017-03-11 14:53:01 +08:00
    @Biggulu
    @julyclyde
    路径和格式都是这样的

    reboot 之后可以正确引导,关闭窗口再打开就无法进入了,比如手动选择
    Biggulu
        18
    Biggulu  
       2017-03-11 17:09:07 +08:00
    @takeoffyoung 贴下 sda1 的格式类型,还有 bootx64.efi 的文件信息看看
    takeoffyoung
        19
    takeoffyoung  
    OP
       2017-03-11 18:40:24 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5514 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 08:50 · PVG 16:50 · LAX 00:50 · JFK 03:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.