您尚未登录。

#1 2022-05-25 21:50:50

yishu
会员
注册时间: 2021-11-04
帖子: 15

登录之后直接进入bios

电脑为联想笔记本,装了archlinux和win10双系统
问题描述:grub菜单进不去,每次开机会先黑屏,然后电脑关机,再次打开后会直接进入bios界面,选择不保存退出之后再次启动就会重复以上过程。
我不太清楚我的哪个操作引起了这个问题,在出现问题的前一次登录我干了三件事:
1、我用yay滚了一次(因为我觉的这样很cooool)(滚挂了也不是这种现象吧)
2、我将默认shell切换成了zsh(我个人觉的没有关系)
3、我在arch Linux Wiki上看到有关grub的一个技巧是可以在平时开机时隐藏grub菜单,而在摁下shift后显示菜单,也就是
https://wiki.archlinux.org/title/GRUB_( … C%E9%9D%A2
中所描述的那样,而我也按照那样做了。
我现在根本进入不了系统,目前是调整了启动项的顺序先进入了windows系统先使用着。或许能找出来grub的日志?(如果有,我甚至不知道有没有这种东西,有也不知道在哪)

离线

#2 2022-05-25 21:52:08

yishu
会员
注册时间: 2021-11-04
帖子: 15

Re: 登录之后直接进入bios

附上提出来的在esp分区的grub.cfg:

#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#

### BEGIN /etc/grub.d/00_header ###
insmod part_gpt
insmod part_msdos
if [ -s $prefix/grubenv ]; then
  load_env
fi
if [ "${next_entry}" ] ; then
   set default="${next_entry}"
   set next_entry=
   save_env next_entry
   set boot_once=true
else
   set default="2"
fi

if [ x"${feature_menuentry_id}" = xy ]; then
  menuentry_id_option="--id"
else
  menuentry_id_option=""
fi

export menuentry_id_option

if [ "${prev_saved_entry}" ]; then
  set saved_entry="${prev_saved_entry}"
  save_env saved_entry
  set prev_saved_entry=
  save_env prev_saved_entry
  set boot_once=true
fi

function savedefault {
  if [ -z "${boot_once}" ]; then
    saved_entry="${chosen}"
    save_env saved_entry
  fi
}

function load_video {
  if [ x$feature_all_video_module = xy ]; then
    insmod all_video
  else
    insmod efi_gop
    insmod efi_uga
    insmod ieee1275_fb
    insmod vbe
    insmod vga
    insmod video_bochs
    insmod video_cirrus
  fi
}

if [ x$feature_default_font_path = xy ] ; then
   font=unicode
else
insmod part_gpt
insmod ext2
search --no-floppy --fs-uuid --set=root 53ce5e0e-f538-4c77-bd78-6a2bd6269032
    font="/usr/share/grub/unicode.pf2"
fi

if loadfont $font ; then
  set gfxmode=auto
  load_video
  insmod gfxterm
  set locale_dir=$prefix/locale
  set lang=zh_CN
  insmod gettext
fi
terminal_input console
terminal_output gfxterm
insmod part_gpt
insmod ext2
search --no-floppy --fs-uuid --set=root 53ce5e0e-f538-4c77-bd78-6a2bd6269032
insmod gfxmenu
loadfont ($root)/usr/share/grub/themes/Vimix/dejavu_32.pf2
loadfont ($root)/usr/share/grub/themes/Vimix/dejavu_sans_12.pf2
loadfont ($root)/usr/share/grub/themes/Vimix/dejavu_sans_14.pf2
loadfont ($root)/usr/share/grub/themes/Vimix/dejavu_sans_16.pf2
loadfont ($root)/usr/share/grub/themes/Vimix/dejavu_sans_24.pf2
loadfont ($root)/usr/share/grub/themes/Vimix/dejavu_sans_48.pf2
loadfont ($root)/usr/share/grub/themes/Vimix/terminus-12.pf2
loadfont ($root)/usr/share/grub/themes/Vimix/terminus-14.pf2
loadfont ($root)/usr/share/grub/themes/Vimix/terminus-16.pf2
loadfont ($root)/usr/share/grub/themes/Vimix/terminus-18.pf2
insmod jpeg
insmod png
set theme=($root)/usr/share/grub/themes/Vimix/theme.txt
export theme
if [ x$feature_timeout_style = xy ] ; then
  set timeout_style=menu
  set timeout=5
# Fallback normal timeout code in case the timeout_style feature is
# unavailable.
else
  set timeout=5
fi
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/06_grub-customizer_menu_color_helper ###
### END /etc/grub.d/06_grub-customizer_menu_color_helper ###

### BEGIN /etc/grub.d/10_linux_proxy ###



menuentry "Arch Linux,Linux linux" --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-linux-advanced-53ce5e0e-f538-4c77-bd78-6a2bd6269032' {
    load_video
    set gfxpayload=keep
    insmod gzio
    insmod part_gpt
    insmod fat
    search --no-floppy --fs-uuid --set=root 5E54-A345
    echo    '载入 Linux linux ...'
    linux    /vmlinuz-linux root=UUID=53ce5e0e-f538-4c77-bd78-6a2bd6269032 rw  loglevel=3 quiet
    echo    '载入初始化内存盘...'
    initrd    /intel-ucode.img /initramfs-linux.img
}
### END /etc/grub.d/10_linux_proxy ###

### BEGIN /etc/grub.d/20_linux_xen ###
### END /etc/grub.d/20_linux_xen ###

### BEGIN /etc/grub.d/30_os-prober ###
menuentry 'Windows Boot Manager (在 /dev/nvme0n1p1)' --class windows --class os $menuentry_id_option 'osprober-efi-5E54-A345' {
    insmod part_gpt
    insmod fat
    search --no-floppy --fs-uuid --set=root 5E54-A345
    chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}
### END /etc/grub.d/30_os-prober ###

### BEGIN /etc/grub.d/30_uefi-firmware ###
menuentry 'UEFI Firmware Settings' $menuentry_id_option 'uefi-firmware' {
    fwsetup
}
### END /etc/grub.d/30_uefi-firmware ###

### BEGIN /etc/grub.d/31_hold_shift ###
if [ "x${timeout}" != "x-1" ]; then
  if keystatus; then
    if keystatus --shift; then
      set timeout=-1
    else
      set timeout=0
    fi
  else
    if sleep --interruptible 3 ; then
      set timeout=0
    fi
  fi
fi
### END /etc/grub.d/31_hold_shift ###

### BEGIN /etc/grub.d/40_custom ###
# 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.
### END /etc/grub.d/40_custom ###

### BEGIN /etc/grub.d/41_custom ###
if [ -f  ${config_directory}/custom.cfg ]; then
  source ${config_directory}/custom.cfg
elif [ -z "${config_directory}" -a -f  $prefix/custom.cfg ]; then
  source $prefix/custom.cfg
fi
### END /etc/grub.d/41_custom ###

最近编辑记录 yishu (2022-05-25 21:52:31)

离线

#3 2022-05-26 10:59:22

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,384
个人网站

Re: 登录之后直接进入bios

微星主板?

离线

#4 2022-05-26 11:16:06

Watermelon.Rei
会员
注册时间: 2021-12-29
帖子: 114

Re: 登录之后直接进入bios

先还原你的第三步吧,
删除
/etc/grub.d/31_hold_shift
然后重新生成配置文件
grub-mkconfig -o /boot/grub/grub.cfg

离线

#5 2022-05-26 19:34:41

yishu
会员
注册时间: 2021-11-04
帖子: 15

Re: 登录之后直接进入bios

依云 说:

微星主板?

主板是:联想 20QNA00MCD ( 英特尔 CM246 芯片组 )

离线

#6 2022-05-26 19:37:23

yishu
会员
注册时间: 2021-11-04
帖子: 15

Re: 登录之后直接进入bios

Watermelon.Rei 说:

先还原你的第三步吧,
删除
/etc/grub.d/31_hold_shift
然后重新生成配置文件
grub-mkconfig -o /boot/grub/grub.cfg

现在是进不去linux了,所以想着能不能在windows上就解决了(毕竟也能进esp分区),要是这样的话我还得找个u盘去:|

离线

#7 2022-05-26 21:17:57

Watermelon.Rei
会员
注册时间: 2021-12-29
帖子: 114

Re: 登录之后直接进入bios

注意配置文件grub.cfg中的

### BEGIN /etc/grub.d/31_hold_shift ###
if [ "x${timeout}" != "x-1" ]; then
  if keystatus; then
    if keystatus --shift; then
      set timeout=-1
    else
      set timeout=0
    fi
  else
    if sleep --interruptible 3 ; then
      set timeout=0
    fi
  fi
fi
### END /etc/grub.d/31_hold_shift ###

注释表明这部分内容是根据31_hold_shift配置文件自动生成出来的,在win下挂载ESP手动删除配置文件里的这部分试一下

GRUB_FORCE_HIDDEN_MENU="true"

对配置文件的影响我还需要试验一下看起来就只是用来触发示例脚本的

最近编辑记录 Watermelon.Rei (2022-05-26 21:44:24)

离线

页脚