AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 704701
Accepted
Ahmad Ismail
Ahmad Ismail
Asked: 2022-06-02 23:48:53 +0800 CST2022-06-02 23:48:53 +0800 CST 2022-06-02 23:48:53 +0800 CST

两个 SSD,两个 Linux 发行版 - 引导期间哪个 grub 显示 grub 菜单?

  • 772

我在两个 SSD 中有两个单独的 Linux 发行版。

  1. 佐林 (/dev/sda)
  2. Linux Mint (/dev/sde)

首先我安装了 Zorin,然后安装了 Linux Mint。

我跑了bootinfoscript。这是结果的要点。

              Boot Info Script 0.61      [1 April 2012]


============================= Boot Info Summary: ===============================

 => No boot loader is installed in the MBR of /dev/sda.
 => No boot loader is installed in the MBR of /dev/sdb.
 => No boot loader is installed in the MBR of /dev/sdc.
 => No boot loader is installed in the MBR of /dev/sdd.
 => No boot loader is installed in the MBR of /dev/sde.

sda1: __________________________________________________________________________

    File system:       vfat
    Boot sector type:  FAT32
    Boot sector info:  No errors found in the Boot Parameter Block.
    Operating System:  
    Boot files:        /efi/BOOT/fbx64.efi /efi/BOOT/mmx64.efi 
                       /efi/memtest86/BOOTX64.efi /efi/ubuntu/grubx64.efi 
                       /efi/ubuntu/mmx64.efi /efi/ubuntu/shimx64.efi

sda2: __________________________________________________________________________

    File system:       ext4
    Boot sector type:  -
    Boot sector info: 
    Operating System:  Zorin OS 16.1
    Boot files:        /boot/grub/grub.cfg /etc/fstab

sde1: __________________________________________________________________________

    File system:       vfat
    Boot sector type:  FAT32
    Boot sector info:  No errors found in the Boot Parameter Block.
    Operating System:  
    Boot files:        

sde2: __________________________________________________________________________

    File system:       ext4
    Boot sector type:  -
    Boot sector info: 
    Operating System:  Linux Mint 20.3 Una
    Boot files:        /boot/grub/grub.cfg /etc/fstab

我不确定我使用的是哪个 grub。我如何知道我正在使用哪个 grub(启动期间显示的 grub 菜单)?如何使用来自不同 SSD 的 grub。我想在 /dev/sda 中使用 grub(这是因为我从这个驱动器启动并且我还想自定义 grub 菜单)。我怎样才能做到这一点?

更新1:

在 Linux Mintefibootmgr命令中显示:

$ efibootmgr
BootCurrent: 0004
Timeout: 1 seconds
BootOrder: 0004,0001,0002,0003
Boot0001* UEFI:CD/DVD Drive
Boot0002* UEFI:Removable Device
Boot0003* UEFI:Network Device
Boot0004* ubuntu

我认为这是我系统中维护的引导顺序。当我grub-customizer在 Linux Mint(在我的情况下Boot0004* ubuntu)中使用时,它会更改启动菜单。

添加请求的命令输出。

$ sudo efibootmgr -v
[sudo] password for ismail:         
BootCurrent: 0004
Timeout: 1 seconds
BootOrder: 0004,0001,0002,0003
Boot0001* UEFI:CD/DVD Drive BBS(129,,0x0)
Boot0002* UEFI:Removable Device BBS(130,,0x0)
Boot0003* UEFI:Network Device   BBS(131,,0x0)
Boot0004* ubuntu    HD(1,GPT,264abb67-bc63-46f7-8106-01f8aa3c65d2,0x800,0x100000)/File(\EFI\UBUNTU\SHIMX64.EFI)

$ lsblk -o +partuuid
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT PARTUUID
sda      8:0    0 232.9G  0 disk            
├─sda1   8:1    0   512M  0 part /boot/efi  264abb67-bc63-46f7-8106-01f8aa3c65d2
└─sda2   8:2    0 232.4G  0 part            1aa55c42-f8ba-4af5-95f1-719f0ea3f6fe
sdb      8:16   0   3.7T  0 disk            
└─sdb1   8:17   0   3.7T  0 part            97963414-695e-4e8d-a872-752afe27fcf1
sdc      8:32   0   5.5T  0 disk            
└─sdc1   8:33   0   5.5T  0 part            27e20d5e-a539-407f-b9d7-0928a78e8706
sdd      8:48   0   3.7T  0 disk            
└─sdd1   8:49   0   3.7T  0 part            13e6dcd3-161a-4c72-a49f-431b03c9f595
sde      8:64   0 223.6G  0 disk            
├─sde1   8:65   0   512M  0 part            d641c8e7-d1ed-4fb0-97d1-3d256f343bad
└─sde2   8:66   0 223.1G  0 part /          9fa068c4-b486-4044-810d-9d41a978c361
grub2 dual-boot
  • 1 1 个回答
  • 261 Views

1 个回答

  • Voted
  1. Best Answer
    telcoM
    2022-06-03T05:08:57+08:002022-06-03T05:08:57+08:00

    看起来目前只有 Mint 的 GRUB 正在使用。

    如果您进入固件启动设置菜单(“BIOS 设置”),您可能会发现当前的主启动目标只是命名ubuntu而不是“磁盘 1”之类的名称。UEFI 允许已安装操作系统的引导设置具有清晰易读的名称,在本例中为ubuntu.

    由于 Mint 和 Zorin 都是 Ubuntu 的衍生产品,它们显然都默认将其 GRUB 安装到/boot/efi/EFI/ubuntuESP 上的目录中,因此最后安装的一个将通过覆盖另一个的引导加载程序来“获胜”。

    BootCurrent: 0004显示的Boot0004是启动当前运行的操作系统实例的配置。PARTUUID264abb67-bc63-46f7-8106-01f8aa3c65d2指的sda1是与引导配置一起使用的 EFI 系统分区Boot0004。固件将首先加载/boot/efi/EFI/ubuntu/shimx64.efi,这是由 Microsoft 签名的安全启动兼容性垫片。它将加载并验证/boot/efi/EFI/ubuntu/grubx64.efi.

    (挂载的文件系统/boot/efi是FAT32,根据UEFI规范,它应该是不区分大小写的。但是,一些有bug的UEFI固件版本是区分大小写的。这里我假设你的固件没有这样的错误。)

    仅固件将接受由硬件制造商或 Microsoft 签名的引导加载程序;将shimx64.efiCanonical 的签名密钥和可选的机器所有者密钥 (MOK) 添加到允许列表中(非持久性,因此shimx64.efi必须在每次启动时执行)。启用安全启动后,如果您希望构建自己的自定义内核或使用第三方内核模块,则需要设置 MOK。

    (如果您需要设置 MOK,请参阅 Debian Wiki 上的这篇文章。它也适用于 Ubuntu 和衍生产品。)

    /boot/efi/EFI/ubuntu/grubx64.efi是 GRUB 的一个版本,基本上所有 GRUB 模块都内置并由 Canonical 签名以符合安全启动要求它来自 package grub-efi-amd64-signed. 因为它是由 Canonical 而不是 Microsoft 签署的,Canonical 将能够在需要时及时向 GRUB 提供安全更新。

    (当 Secure Boot 生效时,GRUB 将无法根据需要加载 GRUB 模块,因为与 Secure Boot 兼容的固件会将未从有效签名的 Windows 样式 PE+ 二进制文件加载的所有数据标记为不可执行CPU。由于 GRUB 模块使用 Unix 风格的ELF 二进制格式而不是 PE+,因此即使模块经过加密签名,固件也不知道如何检查它们。)

    可能有一个最小的 GRUB 配置文件,它只包含访问包含目录的文件系统并从那里加载真实/boot/efi/EFI/ubuntu/grub.cfg文件所需的最少配置行数,通过唯一的 UUID 标识文件系统。如果你用 eg 查看它,它可能看起来像这样:/boot/boot/grub/grub.cfgsudo cat /boot/efi/EFI/ubuntu/grub.cfg

    search.fs_uuid 11111111-2222-3333-4444-555555555555 root 
    set prefix=($root)'/boot/grub'
    configfile $prefix/grub.cfg
    

    代替字符串 11111111-2222-3333-4444-555555555555 将是唯一的文件系统 UUIDsda2或sde2:运行lsblk -o +uuid并比较 UUID。

    如果您希望更改sda2'EFI/ubuntu/grubx64.efi读取其实际配置的位置,您只需编辑/boot/efi/EFI/ubuntu/grub.cfg以将其指向不同的文件系统。

    由于当前的操作系统似乎是 Mint(= Ubuntu 的衍生版本),您可能需要/etc/grub.d/40_custom在 Mint 上进行编辑以添加一个额外的菜单项以切换到 Zorin 的启动菜单:

    #!/bin/sh
    exec tail -n +3 $0
    # This file provides an easy way to add custom menu entries.  Simply type the
    # menu entries you want to add after this comment.  Be careful not to change
    # the 'exec tail' line above.
    menuentry 'Switch to Zorin OS's GRUB menu' {
            search.fs_uuid <filesystem UUID of sda2 here> root
            set prefix=($root)'/boot/grub'
            configfile $prefix/grub.cfg
    }
    

    当 Zorin OS 运行时,您同样可以添加一个菜单项来切换到 Mint 的 GRUB 配置,以防曾经使用过 Zorin 的 GRUB:

    #!/bin/sh
    exec tail -n +3 $0
    # This file provides an easy way to add custom menu entries.  Simply type the
    # menu entries you want to add after this comment.  Be careful not to change
    # the 'exec tail' line above.
    menuentry 'Switch to Mint's GRUB menu' {
            search.fs_uuid <filesystem UUID of sde2 here> root
            set prefix=($root)'/boot/grub'
            configfile $prefix/grub.cfg
    }
    

    如果您想为每个操作系统使用单独的引导加载程序,则必须使用自定义引导加载程序 ID 重新安装 GRUB。为此,在每个操作系统上:

    • 确保/dev/sda1安装为/boot/efi
    • 运行grub-install --bootloader-id=mint或grub-install --bootloader-id=zorin分别

    这应该会在目录/boot/efi/EFI/mint/和/boot/efi/EFI/zorin/. 这些也应分别注册为 UEFI 引导选项,分别命名为mint和zorin。efibootmgr -v您将在输出中看到名称;如果您系统的 UEFI 固件设计良好,它还会在固件启动顺序设置中显示名称。

    如果您这样做,一旦启动选项经过测试mint并按zorin预期工作,您可能希望删除旧的模棱两可的ubuntu条目。这可以通过以下方式完成:

    sudo efibootmgr -b 0004 -B
    sudo rm -rf /boot/efi/EFI/ubuntu
    
    • 2

相关问题

  • grub2-mkconfig 没有生成正确的挂载路径(以及如何摆脱不再使用的额外内核?)

  • 如何在 debian 上找到内核崩溃日志

  • Ctrl + C 在 Linux 上的单用户模式下不起作用

  • 如何为 DIY 多重引导 USB 安装 rEFInd

  • GRUB 配置以识别同一 Linux 发行版的不同桌面环境(安装)

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve