当我打开计算机(或重新启动)时,屏幕在启动 grub 之前会打开和关闭 3 次。如何制止这种行为?

当我打开计算机(或重新启动)时,屏幕在启动 grub 之前会打开和关闭 3 次。如何制止这种行为?

操作系统:Arch Linux x86_64
主持人:81Y3 IdeaPad L3 15IML05
核心:6.8.1-arch1-1

~ λ  lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sr0          11:0    1  1024M  0 rom
nvme0n1     259:0    0 476.9G  0 disk
├─nvme0n1p1 259:1    0     2G  0 part /boot
├─nvme0n1p2 259:2    0    12G  0 part [SWAP]
├─nvme0n1p3 259:3    0   100G  0 part /
└─nvme0n1p4 259:4    0 362.9G  0 part /home

我已经将UEFI更新到最新版本"EJCN31WW"

EFI分区信息:

File System: fat32
Flags: boot, esp

GRUB配置文件:

GRUB_DEFAULT=0
GRUB_TIMEOUT=0
GRUB_DISTRIBUTOR="Arch"
GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3"
GRUB_CMDLINE_LINUX=""
GRUB_PRELOAD_MODULES="part_gpt part_msdos"
GRUB_TIMEOUT_STYLE=menu
GRUB_TERMINAL_INPUT=console
GRUB_GFXMODE=1920x1080
GRUB_GFXPAYLOAD_LINUX=keep
GRUB_DISABLE_RECOVERY=true

我尝试过丢失 UEFI 设置,但没有成功。
我注意到,如果我进入引导菜单并在第一次打开时选择 grub,它将立即引导 grub。

因此,我认为这可能是由以下原因造成的(我可能错了XD):

  1. EFI 分区太大 (2Gb)。
  2. EFI 分区的格式不正确。
  3. 它尝试启动 grub,但失败了。

解决办法是什么?

这是启动分区树:

/boot
├── EFI
│   └── GRUB
│       └── grubx64.efi
├── grub

编辑2:

~ λ  efibootmgr
BootCurrent: 0000
Timeout: 0 seconds
BootOrder: 0000,2001,2002,2003
Boot0000* GRUB  HD(1,GPT,dbf925d5-a5c8-4bc3-8327-abdccf9b4036,0x800,0x400000)/\EFI\GRUB\grubx64.efi
Boot2001* EFI USB Device    RC
Boot2002* EFI DVD/CDROM RC
Boot2003* EFI Network   RC

区块ID:

~ λ  doas blkid
/dev/nvme0n1p3: UUID="ce1f67f3-1e62-45ad-b5c3-2b0bfedbe19b" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="e320fb70-dd33-4e4a-9cf2-48ea4d91630d"
/dev/nvme0n1p1: UUID="F7CC-1B87" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="dbf925d5-a5c8-4bc3-8327-abdccf9b4036"
/dev/nvme0n1p4: UUID="0c764fa9-8209-4e80-bdd5-a11c56bf2bde" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="86879a61-1e57-489f-9210-528ed4f8760b"
/dev/nvme0n1p2: UUID="badec528-15b0-4cd5-8e7f-eb6452fb4de3" TYPE="swap" PARTUUID="7e028323-a22e-45d2-96a2-2615c8879aa7"

文件系统表

~ λ  cat /etc/fstab
# Static information about the filesystems.
# See fstab(5) for details.

# <file system> <dir> <type> <options> <dump> <pass>
# /dev/nvme0n1p3
UUID=ce1f67f3-1e62-45ad-b5c3-2b0bfedbe19b   /           ext4        rw,relatime 0 1

# /dev/nvme0n1p1
UUID=F7CC-1B87          /boot       vfat        rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro   0 2

# /dev/nvme0n1p5
UUID=0c764fa9-8209-4e80-bdd5-a11c56bf2bde   /home       ext4        rw,relatime 0 2

# /dev/nvme0n1p2
UUID=badec528-15b0-4cd5-8e7f-eb6452fb4de3   none        swap        defaults    0 0

来自 dmesg 的固件错误

~ λ doas dmesg
...
[    0.000000] [Firmware Bug]: TSC ADJUST: CPU0: -1306247588 force to 0
...

答案1

从技术角度来看,引导对我来说看起来不错。

我认为这正在发生:

显示器的分辨率瞬间改变为另一个分辨率。由于这是启动过程的早期阶段,因此没有其他方法可以打开和关闭显示器。

我的猜测是,您看到的启动图像(例如 Lenovo 徽标等)的分辨率与 grub 菜单的分辨率不同。大多数图片的分辨率为 800x600。

因为当您停止“花哨”的图片引导并直接以正确的大小引导 grub 菜单时,您不会得到任何更改。

我认为它是这样的:

  • 初始开机分辨率 -->> 也许 480x600 真的不知道 ->> 初始空白
  • 联想徽标显示 ->> 分辨率需要更改 ->> 分辨率更改为显示图片。第二个空白
  • Grub 开始启动并请求更改为 1920x1080 ->> 第三个空白以显示正确的 Grub 分辨率。

所以我的第一个建议是将 grub 分辨率降低到 800x600 并测试一些空白是否消失。您也可以尝试在调试模式下启动,这样就不会显示图片和徽标。

回答您的问题:

因此,我认为这可能是由以下原因造成的(我可能错了XD):

The EFI partition is too large (2Gb).
  • 没关系。如果你想节省一些空间,512GB就足够了

    EFI 分区的格式不正确。

  • 确实如此,否则引导将不会成功。如果是这种情况,您将看到 EFI shell。

    它尝试启动 grub,但失败了。

  • 然后你会看到一个 shell 并且无法启动。

答案2

我没有找到答案,所以最后我进入了BIOS设置。

选择传统启动,

并首先尝试 UEFI,

效果很好。

但当我选择 UEFI 而不是传统启动时,它仍然无法工作。我认为联想附带的固件有问题。

谢谢

相关内容