Когда я загружаю свой компьютер, будь то кнопка перезагрузки программного обеспечения ОС или кнопка физического питания на моем ноутбуке, GRUB выдает мне командную строку.

Это само по себе не так странно. Я бы просто предположил, что что-то неправильно настроил, за исключением того, что если я наберу reboot в командной строке GRUB, мой компьютер перезагрузится, и GRUB выдаст мне обычное меню загрузки, как будто ничего не произошло.

Если я нажимаю c в обычном меню загрузки, чтобы снова получить командную строку, а затем набираю reboot , GRUB по-прежнему возвращается в обычное меню после перезагрузки.

Что может заставить GRUB 2 успешно инициализироваться только тогда, когда перезагрузка была вызвана его собственной командной строкой?

У меня двойная загрузка Windows 7 и Arch Linux, обе 64-битные. Я использую MBR, а не UEFI. Вот содержимое /boot/grub/grub.cfg , которое было автоматически сгенерировано инструментом Arch grub-mkconfig .

#
# 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
}

set menu_color_normal=white/red
set menu_color_highlight=red/white

if [ x$feature_default_font_path = xy ] ; then
   font=unicode
else
insmod part_msdos
insmod ext2
set root='hd0,msdos5'
if [ x$feature_platform_search_hint = xy ]; then
  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5  cdd2682e-3d7c-476f-bca9-9ce2d5be28f7
else
  search --no-floppy --fs-uuid --set=root cdd2682e-3d7c-476f-bca9-9ce2d5be28f7
fi
    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=en_US
  insmod gettext
fi
terminal_input console
terminal_output gfxterm
set timeout=30
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/10_linux ###
menuentry 'Arch Linux, with Linux core repo kernel' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-core repo kernel-true-cdd2682e-3d7c-476f-bca9-9ce2d5be28f7' {
    load_video
    set gfxpayload=keep
    insmod gzio
    insmod part_msdos
    insmod ext2
    set root='hd0,msdos5'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5  cdd2682e-3d7c-476f-bca9-9ce2d5be28f7
    else
      search --no-floppy --fs-uuid --set=root cdd2682e-3d7c-476f-bca9-9ce2d5be28f7
    fi
    echo    'Loading Linux core repo kernel ...'
    linux   /boot/vmlinuz-linux root=UUID=cdd2682e-3d7c-476f-bca9-9ce2d5be28f7 ro  quiet
    echo    'Loading initial ramdisk ...'
    initrd  /boot/initramfs-linux.img
}
menuentry 'Arch Linux, with Linux core repo kernel (Fallback initramfs)' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-core repo kernel-fallback-cdd2682e-3d7c-476f-bca9-9ce2d5be28f7' {
    load_video
    set gfxpayload=keep
    insmod gzio
    insmod part_msdos
    insmod ext2
    set root='hd0,msdos5'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5  cdd2682e-3d7c-476f-bca9-9ce2d5be28f7
    else
      search --no-floppy --fs-uuid --set=root cdd2682e-3d7c-476f-bca9-9ce2d5be28f7
    fi
    echo    'Loading Linux core repo kernel ...'
    linux   /boot/vmlinuz-linux root=UUID=cdd2682e-3d7c-476f-bca9-9ce2d5be28f7 ro  quiet
    echo    'Loading initial ramdisk ...'
    initrd  /boot/initramfs-linux-fallback.img
}

### END /etc/grub.d/10_linux ###

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

### BEGIN /etc/grub.d/30_os-prober ###
menuentry 'Windows 7 (loader) (on /dev/sda2)' --class windows --class os $menuentry_id_option 'osprober-chain-CE7C7A0D7C79F097' {
    insmod part_msdos
    insmod ntfs
    set root='hd0,msdos2'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos2 --hint-efi=hd0,msdos2 --hint-baremetal=ahci0,msdos2  CE7C7A0D7C79F097
    else
      search --no-floppy --fs-uuid --set=root CE7C7A0D7C79F097
    fi
    chainloader +1
}
### END /etc/grub.d/30_os-prober ###

### 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 ###

### BEGIN /etc/grub.d/60_memtest86+ ###
### END /etc/grub.d/60_memtest86+ ###

1 ответ1

2

Я помню подобные проблемы в разных случаях, и я начал замечать, что это происходит всякий раз, когда были обновления ядра или обновления grub (я так думаю, в любом случае, переустановка всегда исправляла это).

Пусть Arch регенерирует grub.cfg как минимум, хотя это звучит как initrd/initramfs и grub не синхронизирован. Есть еще один загрузочный ресурс, который не помешает проверить, но я ничего не могу с этим поделать.

В любом случае, если вы сделали какие-либо обновления / установки, зайдите, проверьте системные журналы и выясните, что они были, и отмените их по одному, или просто откатите их все обратно.

Может быть, ваш BIOS тоже шизофреничен, но гораздо более вероятно, что обновления пакетов не были изящно синхронизированы.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .