Grub2 после обновления до Fedora Server 27

Grub2 после обновления до Fedora Server 27

Я обновился до F27 и перешел в аварийную оболочку после перезагрузки. После нескольких часов с гуглом и экспериментами, загрузил восстановление с установочного CD, нашел образ ОС и скопировал /usr/lib/os-release в /etc/os-release, и это, среди прочего, что я, вероятно, не помню, заставило меня

grub>

Итак, я обнаружил, что могу загрузиться, если сделаю это.

grub> set boot=(hd0,msdos1)
grub> set prefix=(hd0,msdos1)
grub> insmod normal
normal

Затем я получаю приглашение на выбор ядра (теперь там написано «dracut» вместо «Fedora»?) и нажимаю «e», чтобы отредактировать 4.14.18-300.fc27.x86_64, и меняю «set root='hd0,msdos1'» на «set root='hd0,msdos3'», затем нажимаю ctrl-x для запуска, и Fedora 27 наконец-то загружается.

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

# grub2-mkconfig -o /boot/grub2/grub.cfg

Он сказал, что все прошло успешно, но это ничего не изменило. Мне все еще нужно выполнить всю процедуру, чтобы машина загрузилась, и это довольно обременительно. К счастью, нам не приходится часто ее перезагружать.

У меня такой вопрос: как сделать так, чтобы эти изменения разделов сохранились после перезагрузки?

Спасибо!

grub.cfg, похоже, имеет правильные значения, но мне все равно придется проделать вышеуказанные действия, чтобы машина загрузилась. /etc/grub.cfg связан с /boot/grub2/grub.cfg:

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

### BEGIN /etc/grub.d/00_header ###
set pager=1

if [ -f ${config_directory}/grubenv ]; then
  load_env -f ${config_directory}/grubenv
elif [ -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="${saved_entry}"
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
}

terminal_output console
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/01_users ###
if [ -f ${prefix}/user.cfg ]; then
  source ${prefix}/user.cfg
  if [ -n "${GRUB2_PASSWORD}" ]; then
    set superusers="root"
    export superusers
    password_pbkdf2 root ${GRUB2_PASSWORD}
  fi
fi
### END /etc/grub.d/01_users ###

### BEGIN /etc/grub.d/10_linux ###
menuentry 'dracut (4.14.18-300.fc27.x86_64) 27 (Server Edition) dracut-046-8.git20180105.fc27' --class generic --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-4.14.18-300.fc27.x86_64-advanced-14f0dc3e-9ff4-4051-a8a8-302730b552fb' {
    load_video
    set gfxpayload=keep
    insmod gzio
    insmod part_msdos
    insmod ext2
    set root='hd0,msdos3'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1'  e5576283-fa19-4b57-8c1a-4d44227e8b8c
    else
      search --no-floppy --fs-uuid --set=root e5576283-fa19-4b57-8c1a-4d44227e8b8c
    fi
    linux16 /vmlinuz-4.14.18-300.fc27.x86_64 root=UUID=14f0dc3e-9ff4-4051-a8a8-302730b552fb ro rhgb quiet 
    initrd16 /initramfs-4.14.18-300.fc27.x86_64.img
}
menuentry 'dracut (4.11.12-100.fc24.x86_64) 27 (Server Edition) dracut-046-8.git20180105.fc27' --class generic --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-4.11.12-100.fc24.x86_64-advanced-14f0dc3e-9ff4-4051-a8a8-302730b552fb' {
    load_video
    set gfxpayload=keep
    insmod gzio
    insmod part_msdos
    insmod ext2
    set root='hd0,msdos3'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1'  e5576283-fa19-4b57-8c1a-4d44227e8b8c
    else
      search --no-floppy --fs-uuid --set=root e5576283-fa19-4b57-8c1a-4d44227e8b8c
    fi
    linux16 /vmlinuz-4.11.12-100.fc24.x86_64 root=UUID=14f0dc3e-9ff4-4051-a8a8-302730b552fb ro rhgb quiet 
    initrd16 /initramfs-4.11.12-100.fc24.x86_64.img
}
menuentry 'dracut (4.11.10-100.fc24.x86_64) 27 (Server Edition) dracut-046-8.git20180105.fc27' --class generic --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-4.11.10-100.fc24.x86_64-advanced-14f0dc3e-9ff4-4051-a8a8-302730b552fb' {
    load_video
    set gfxpayload=keep
    insmod gzio
    insmod part_msdos
    insmod ext2
    set root='hd0,msdos3'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1'  e5576283-fa19-4b57-8c1a-4d44227e8b8c
    else
      search --no-floppy --fs-uuid --set=root e5576283-fa19-4b57-8c1a-4d44227e8b8c
    fi
    linux16 /vmlinuz-4.11.10-100.fc24.x86_64 root=UUID=14f0dc3e-9ff4-4051-a8a8-302730b552fb ro rhgb quiet 
    initrd16 /initramfs-4.11.10-100.fc24.x86_64.img
}
menuentry 'dracut (4.14.18-300.fc27.x86_64+debug) 27 (Server Edition) dracut-046-8.git20180105.fc27' --class generic --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-4.14.18-300.fc27.x86_64+debug-advanced-14f0dc3e-9ff4-4051-a8a8-302730b552fb' {
    load_video
    set gfxpayload=keep
    insmod gzio
    insmod part_msdos
    insmod ext2
    set root='hd0,msdos3'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1'  e5576283-fa19-4b57-8c1a-4d44227e8b8c
    else
      search --no-floppy --fs-uuid --set=root e5576283-fa19-4b57-8c1a-4d44227e8b8c
    fi
    linux16 /vmlinuz-4.14.18-300.fc27.x86_64+debug root=UUID=14f0dc3e-9ff4-4051-a8a8-302730b552fb ro rhgb quiet 
    initrd16 /initramfs-4.14.18-300.fc27.x86_64+debug.img
}
menuentry 'dracut (4.11.12-100.fc24.x86_64+debug) 27 (Server Edition) dracut-046-8.git20180105.fc27' --class generic --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-4.11.12-100.fc24.x86_64+debug-advanced-14f0dc3e-9ff4-4051-a8a8-302730b552fb' {
    load_video
    set gfxpayload=keep
    insmod gzio
    insmod part_msdos
    insmod ext2
    set root='hd0,msdos3'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1'  e5576283-fa19-4b57-8c1a-4d44227e8b8c
    else
      search --no-floppy --fs-uuid --set=root e5576283-fa19-4b57-8c1a-4d44227e8b8c
    fi
    linux16 /vmlinuz-4.11.12-100.fc24.x86_64+debug root=UUID=14f0dc3e-9ff4-4051-a8a8-302730b552fb ro rhgb quiet 
    initrd16 /initramfs-4.11.12-100.fc24.x86_64+debug.img
}
menuentry 'dracut (4.11.10-100.fc24.x86_64+debug) 27 (Server Edition) dracut-046-8.git20180105.fc27' --class generic --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-4.11.10-100.fc24.x86_64+debug-advanced-14f0dc3e-9ff4-4051-a8a8-302730b552fb' {
    load_video
    set gfxpayload=keep
    insmod gzio
    insmod part_msdos
    insmod ext2
    set root='hd0,msdos3'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1'  e5576283-fa19-4b57-8c1a-4d44227e8b8c
    else
      search --no-floppy --fs-uuid --set=root e5576283-fa19-4b57-8c1a-4d44227e8b8c
    fi
    linux16 /vmlinuz-4.11.10-100.fc24.x86_64+debug root=UUID=14f0dc3e-9ff4-4051-a8a8-302730b552fb ro rhgb quiet 
    initrd16 /initramfs-4.11.10-100.fc24.x86_64+debug.img
}
menuentry 'dracut (0-rescue-a9f8b0f7c9ac492ea0ca157a4e1f3d7b) 27 (Server Edition) dracut-046-8.git20180105.fc27' --class generic --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-0-rescue-a9f8b0f7c9ac492ea0ca157a4e1f3d7b-advanced-14f0dc3e-9ff4-4051-a8a8-302730b552fb' {
    load_video
    insmod gzio
    insmod part_msdos
    insmod ext2
    set root='hd0,msdos3'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1'  e5576283-fa19-4b57-8c1a-4d44227e8b8c
    else
      search --no-floppy --fs-uuid --set=root e5576283-fa19-4b57-8c1a-4d44227e8b8c
    fi
    linux16 /vmlinuz-0-rescue-a9f8b0f7c9ac492ea0ca157a4e1f3d7b root=UUID=14f0dc3e-9ff4-4051-a8a8-302730b552fb ro rhgb quiet 
    initrd16 /initramfs-0-rescue-a9f8b0f7c9ac492ea0ca157a4e1f3d7b.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/20_ppc_terminfo ###
### END /etc/grub.d/20_ppc_terminfo ###

### BEGIN /etc/grub.d/30_os-prober ###
### 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 ###

Вывод blkid:

 [root@vh02 ~]# blkid
/dev/sda1: UUID="e5576283-fa19-4b57-8c1a-4d44227e8b8c" TYPE="ext4" PARTUUID="348d6d2c-01"
/dev/sda2: LABEL="home" UUID="5c592a5a-9819-40d5-a1aa-9e04688cecfa" TYPE="ext4" PARTUUID="348d6d2c-02"
/dev/sda3: UUID="14f0dc3e-9ff4-4051-a8a8-302730b552fb" TYPE="xfs" PARTUUID="348d6d2c-03"
/dev/sda5: UUID="4f19f0d8-badf-4dd3-8105-0bfb3d12609c" TYPE="swap" PARTUUID="348d6d2c-05"

решение1

Если ваш том /boot находится на sda1, то ваш пункт меню определенно неправильный. Посмотрите на следующую верхнюю запись:

### BEGIN /etc/grub.d/10_linux ###
menuentry 'dracut (4.14.18-300.fc27.x86_64) 27 (Server Edition) dracut-046-8.git20180105.fc27' --class generic --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-4.14.18-300.fc27.x86_64-advanced-14f0dc3e-9ff4-4051-a8a8-302730b552fb' {
    load_video
    set gfxpayload=keep
    insmod gzio
    insmod part_msdos
    insmod ext2
    set root='hd0,msdos3'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1'  e5576283-fa19-4b57-8c1a-4d44227e8b8c
    else
      search --no-floppy --fs-uuid --set=root e5576283-fa19-4b57-8c1a-4d44227e8b8c
    fi
    linux16 /vmlinuz-4.14.18-300.fc27.x86_64 root=UUID=14f0dc3e-9ff4-4051-a8a8-302730b552fb ro rhgb quiet 
    initrd16 /initramfs-4.14.18-300.fc27.x86_64.img
}

set root='hd0,msdos3' неверен. Должно быть 'hd0,msdos1'. Это то, что указывает GRUB на ваш раздел /boot, в то время как аргумент root= для вашего ядра (строка, которая начинается с "linux16") должен указывать на UUID файловой системы /.

У вас, вероятно, есть файлы grub на /, а также /boot, и во время обновления /boot мог быть размонтирован. Трудно сказать по предоставленной информации, но это распространенная причина. Исправление может быть таким же простым, как повторное создание конфигурации grub с grub-mkconfigодновременным монтированием /dev/sda1 в /boot. Вы также можете сначала очистить каталог /boot в файловой системе /, если это действительно проблема.

Ваши проблемы с dracut являются отдельными, но связанными. Я бы посмотрел на строку root=UUID= вашего ядра и убедился, что UUID там действительно относится к вашей корневой файловой системе, а не к чему-то другому. blkidв работающей системе будет выведен UUID рядом с точкой монтирования, а также другие данные. Ваше меню и другие вещи говорят 'dracut', потому что генерация конфигурации grub не обнаружила установку fedora должным образом. Опять же, это может быть связано с размонтированным /boot или даже с привязкой смонтированного / во время grub-mkconfig.

Связанный контент